2009-11-02 4 views
1

Есть ли способ вызвать класс php (например, $ var = new className) и var хранит значение, возвращаемое функцией className?Вызов PHP-класса

Или, есть способ вызвать класс и не выполнять ли он функцию с тем же именем?

ответ

2

Функция с тем же именем, что и класс, была способностью «конструкторы» в php 4. Эта функция вызывается автоматически при создании нового экземпляра объекта.

В php 5 вместо этого используется новая магическая функция __construct(). Если вы используете php5 и не включаете метод '__construct', php будет искать метод конструктора старого стиля. http://www.php.net/manual/en/language.oop5.decon.php

Так что, если вы используете php5, добавьте метод «__construct» в классе, и PHP прекратит выполнение вашего «метод с тем же именем, что и класс», когда новый объект строится.

+0

Omg большое спасибо. Добавление пустого метода __construct именно то, что мне нужно для выполнения этой работы. Ваши удивительные! – Dylan

0

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

Честно говоря, из вашего вопроса, похоже, вы не понимаете намерения занятий.

+0

Я не очень хорошо объясняю, что я имею в виду. Прямо сейчас я вызываю конструктор, как обычную функцию, и он возвращает данные. Но проблема в том, что функция затем вызывается дважды, один раз для класса и один раз, когда я ссылаюсь на нее. Есть ли способ обойти это без изменения имени? Я знаю другой способ, которым я могу это сделать, но я действительно не хотел его менять. – Dylan

+0

вы можете показать нам код? – Galen

+0

Я боюсь его на нескольких разных страницах и не очень легко разместить здесь. Я просто пойду с моей другой идеей. Спасибо за помощь. – Dylan

2

Это возможно в PHP5, используя магический метод __toString(); для возврата значения из экземпляра класса/объекта.

просто

class MyClass{ 

function __construct(){ 
    // constructor 
} 

function __toString(){ 
    // to String 
    return 5; 
} 

} 

$inst = new MyClass(); 

echo $inst; // echos 5 

Конструкторы не возвращают значение (на самом деле вы не можете сделать это). Если вы хотите получить значение из экземпляра класса, используйте магический метод __toString().

+0

Итак, мне нужно было бы переименовать функцию в __toString? – Dylan

+0

конструкторы не возвращают значение. Если вы хотите получить значение из экземпляра класса, используйте магический метод __toString() – mauris

Смежные вопросы