<?php class DBFactory { function __construct(){ return 'Need to echo'; } } $db = new DBFactory; echo $db; ?>
Не работает 🙁
Я не понимаю, почему вы смотрите в ООП, если ваш tryiung возвращает значения в конструкторе.
вся точка ООП состоит в том, чтобы иметь объекты, которые выполняют много задач, если вы хотите вернуть строку, массив, ресурс, тогда ООП не для вас.
__constructors используются для инициирования кода во время предварительных стадий инициализации объекта, ведь вы можете выполнить код для подготовки объекта до того, как пользователь сможет его использовать.
Если вы хотите использовать объект __toString для объектов, используйте его с умом, его основная цель – коэффициент чтения в объектах, а не в хранилище и т. Д., Которые используются главным образом при отладке ошибок.
Когда вы создаете объект, используя new
ключевое слово, процессор php создает объект и назначает его памяти, затем он запускает конструкцию, но не возвращает никаких возвращенных значений после того, как конструктор достиг своей конечной точки, ссылка для объекта в память возвращается переменной, которую вы просили. поэтому теоретически вы можете запустить $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();
Вы ничего не можете вернуть от конструктора. Вы уже получаете новый объект назад, вы не можете получить другое значение поверх этого и назначить оба значения $db
.
Конструкторы ничего не должны возвращать.
Если вы хотите эхо-объект, вы должны определить, как сформировать его строковое представление с помощью магического метода __tostring
:
class DBFactory { function __tostring(){ return 'Need to echo'; } } $db = new DBFactory(); echo $db;
Как правило, невозможно вернуть значение в конструкторе класса. В этом случае $ db содержит экземпляр класса, а не возвращаемое значение.
Вы можете создать отдельную функцию, и эта функция вернет значение:
<?php class DBFactory { function toEcho() { return 'Need to echo'; } } $db = new DBFactory(); echo $db->toEcho(); ?>
$db = new DBFactory();
Я думаю, что это "()" также здесь