Есть ли способ вызвать класс php (например, $ var = new className) и var хранит значение, возвращаемое функцией className?Вызов PHP-класса
Или, есть способ вызвать класс и не выполнять ли он функцию с тем же именем?
Есть ли способ вызвать класс php (например, $ var = new className) и var хранит значение, возвращаемое функцией className?Вызов PHP-класса
Или, есть способ вызвать класс и не выполнять ли он функцию с тем же именем?
Функция с тем же именем, что и класс, была способностью «конструкторы» в php 4. Эта функция вызывается автоматически при создании нового экземпляра объекта.
В php 5 вместо этого используется новая магическая функция __construct(). Если вы используете php5 и не включаете метод '__construct', php будет искать метод конструктора старого стиля. http://www.php.net/manual/en/language.oop5.decon.php
Так что, если вы используете php5, добавьте метод «__construct» в классе, и PHP прекратит выполнение вашего «метод с тем же именем, что и класс», когда новый объект строится.
Конструкторы не возвращают значения, они используются для создания нового объекта, который вы создаете. $ var всегда будет содержать ссылку на новый объект, используя предоставленный вами код.
Честно говоря, из вашего вопроса, похоже, вы не понимаете намерения занятий.
Я не очень хорошо объясняю, что я имею в виду. Прямо сейчас я вызываю конструктор, как обычную функцию, и он возвращает данные. Но проблема в том, что функция затем вызывается дважды, один раз для класса и один раз, когда я ссылаюсь на нее. Есть ли способ обойти это без изменения имени? Я знаю другой способ, которым я могу это сделать, но я действительно не хотел его менять. – Dylan
вы можете показать нам код? – Galen
Я боюсь его на нескольких разных страницах и не очень легко разместить здесь. Я просто пойду с моей другой идеей. Спасибо за помощь. – Dylan
$var = new classname
всегда будет возвращать экземпляр classname
. Вы не можете заставить его вернуть что-то еще.
Прочитайте это ... http://www.php.net/manual/en/language.oop5.php
Это возможно в PHP5, используя магический метод __toString(); для возврата значения из экземпляра класса/объекта.
просто
class MyClass{
function __construct(){
// constructor
}
function __toString(){
// to String
return 5;
}
}
$inst = new MyClass();
echo $inst; // echos 5
Конструкторы не возвращают значение (на самом деле вы не можете сделать это). Если вы хотите получить значение из экземпляра класса, используйте магический метод __toString().
Omg большое спасибо. Добавление пустого метода __construct именно то, что мне нужно для выполнения этой работы. Ваши удивительные! – Dylan