За последние 24 часа нас посетили 61110 программистов и 1744 робота. Сейчас ищут 1096 программистов ...

Конструкторы пхп

Тема в разделе "PHP для новичков", создана пользователем Golovastik, 22 ноя 2010.

  1. Golovastik

    Golovastik Активный пользователь

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Изучаю конструкторы на php.su.
    Написал простой конструктор с одним параметром, он не выводится на экран, почему?

    Код (Text):
    1.  
    2. <?php
    3. class A{
    4. private $s; //Объявил свойство в качестве закрытого члена класса
    5. function A($otdacha){
    6. $this->s = $otdacha;
    7.  }
    8. }
    9.  
    10. $obj = new A("Санта Клаус");
    11.  
    12. ?>
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    а где у тебя оператор для вывода на экран?

    echo например или print
     
  3. Golovastik

    Golovastik Активный пользователь

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Так конструктор же вызывается при создании объекта, почему тогда вывода не произошло без эчо?
     
  4. Golovastik

    Golovastik Активный пользователь

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Скажите, как вывести правильно?
    Ведь так тоже же нельзя в конструкторах:
    PHP:
    1.  
    2. function A($otdacha){
    3. return $this->s = $otdacha;
    4.  }
    5.  
    Так только в методах возможно, но не в конструкторах. Как тогда вывести результат?
    Почему только так?
    HTML:
    1.  
    2. <?php
    3. class A{
    4. private $s;
    5. function A($otdacha){
    6. echo $this->s = $otdacha;
    7.  }
    8. }
    9.  
    10. $obj = new A("Санта Клаус");
    11.  
    12.  
    13. ?>
    14.  
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    блин, return тоже не выводит результат на экран, он его возвращает!!!!

    PHP:
    1.  <?php
    2.   class A{
    3.  
    4.       private $s;
    5.  
    6.     public function A($otdacha)
    7.     {
    8.           $this->s = $otdacha;
    9.      }
    10.  
    11.   public function getS()
    12.    {
    13.          return $this->s;
    14.    }
    15. }
    16.  
    17.   $obj = new A("Санта Клаус");
    18.  
    19.    echo $obj->getS();
    20.  
    21.  ?>
     
  6. Ensiferum

    Ensiferum Активный пользователь

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
    Такой тип контруктора был в PHP4, если не ошибаюсь. в PHP5 упор на __construct
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Ensiferum

    В пятом и то и это работает в целях обратной совместимости. Сначала ищется __construct(), если не найден - метод с названием класса
     
  8. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    с 5.3.3 уже нет. на главной пхп.нет написано. пока только для пространств имен, но затем наверное и для всех сделают.
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    iliavlad
    Ну и глупость сделают, ибо словосочетание "function __construct" выглядит крайне уебищно... да и кучу существующего кода (в т.ч. и написанного для php5) поломают.
     
  10. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    мне сложно судить, я начал сразу с function __construct()
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    конструкт лучше. формальнее. использовать заранее определенные методы для заранее определенных вещей - определенно лучше.
     
  12. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    В С++ нет никаких __construct, а сам конструктор объявляется по имени класса (деструктор в свою очередь предваряет имя класса тильдой). Проблема у РНР совершенно в другом - у него заёбы относительно имени метода в классе и имени другого класса.
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Но в PHP и конструктор то ненастоящий.
     
  14. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Apple
    Речь не мальчика, но мужа :)
    Почему-то мне это ни разу не мешало... а можно пример?