Метод Echo Return; - PullRequest
       5

Метод Echo Return;

1 голос
/ 15 июля 2010
<?php
class DBFactory {  
     function __construct(){  
         return 'Need to echo';
                  }  
}  
$db = new DBFactory;  
echo $db;
?>

Не работает: (

Ответы [ 5 ]

9 голосов
/ 15 июля 2010

Я не понимаю, зачем вы заглядываете в ООП, если вы пытаетесь вернуть значения в конструкторе.

весь смысл ООП состоит в том, чтобы иметь объекты, которые выполняют много задач, если вы хотите вернуть строку, массивРесурс затем ООП не для вас.

__ Конструкторы используются для инициации кода на предварительных этапах инициализации объекта, позволяя вам выполнить код для подготовки объекта, прежде чем пользователь сможет его использовать.

Если вы хотите использовать __toString для объектов, то используйте его разумно, его основная цель - коэффициент читабельности объектов, а не хранилища и т. Д., Которые в основном используются при отладке ошибок.процессор php с ключевым словом new создает объект и присваивает его памяти, затем запускает конструкцию, но не содержит никаких возвращаемых значений, после того как конструктор достигнет своего конечного значения, возвращается ссылка на объект в памятик переменной, которую вы просили, чтобы это было.так что в теории вы можете запустить $db->__construct() как метод, но только после того, как объект полностью создан.

просто создайте метод для возврата строки, подобной

class DBFactory
{
     function whatAmI()
     {
         return 'I am DBFactory';
     }  
}
$MyOBJECT = new DBFactory;
echo $MyOBJECT->whatAmI();

Это действительно ДЕЙСТВИТЕЛЬНО глупо, но, как вы хотите знать,

class DBFactory{  
     function __construct()
     {
         return 'Need to echo';
     }
}

$db = new DBFactory();
echo $db->__construct();
7 голосов
/ 15 июля 2010

Вы не можете ничего вернуть из конструктора. Вы уже получаете новый объект обратно, вы не можете получить другое значение поверх него и назначить оба значения $db.

3 голосов
/ 15 июля 2010

Конструкторы не должны ничего возвращать.

Если вы хотите отобразить объект, вы должны определить, как сформировать его строковое представление с помощью магического метода __tostring:

class DBFactory {  
     function __tostring(){  
         return 'Need to echo';
     }  
}
$db = new DBFactory();
echo $db;
1 голос
/ 15 июля 2010

Как правило, невозможно вернуть значение в конструктор класса. В этом случае $ db содержит экземпляр класса, а не возвращаемое значение.

Вы можете создать отдельную функцию, и эта функция вернет значение:

<?php
class DBFactory {  
      function toEcho() {
        return 'Need to echo';
      }
}  
$db = new DBFactory();  
echo $db->toEcho();
?>
0 голосов
/ 15 июля 2010
$db = new DBFactory();  

я думаю, что это "()" также будет здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...