Какова цель начальной функции в классе PHP, имя которого совпадает с именем класса? - PullRequest
3 голосов
/ 19 июня 2010

Я начинаю работать с OO PHP, и после просмотра множества классов, которые я скачал из Интернета, я заметил, что некоторые - но не все - эти классы имеют начальную функцию с тем же именем, например

class MyClass{

function MyClass{

//function contents in here

}

function otherfunction{

//more stuff here

}

}

Для чего эта начальная функция?И как это помогает с написанием классов?

Ответы [ 4 ]

5 голосов
/ 19 июня 2010

Это конструктор в старом стиле . Если вы используете PHP 5 (вам следует), вам следует избегать этих конструкторов и делать вместо этого:

class MyClass{

    function __construct() {
        //function contents in here
    }

    function otherfunction() {
        //more stuff here
    }
}

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

0 голосов
/ 25 июня 2010

обратите внимание, что регистр не учитывается. Например, когда у вас есть класс Bark () для игры с собакой, имя класса Bark - это ваша ссылка на шум, производимый собакой.

Если вы хотите, чтобы конкретная собака (например, пудель, который расширяет общий объект Dog) лаяла, вы можете назвать этот метод bark (), потому что именно этого вы хотите, чтобы собака делала (см. Двойственность между ВЕЩЕЙ и КОМАНДА? (Класс Bark и метод bark ()).

Итак, когда вы делаете это:

интерфейс BarkBehaviour { публичная функция кора (); }

класс Bark реализует BarkBehaviour { публичная функция лает () { echo "\ nWoof!"; } }

создание экземпляра свойства barkBehaviour вашей собаки будет повторять "Woof", потому что PHP считает, что метод bark () является конструктором для класса Bark, который вы НЕ намеревались таким образом. В JAVA эти вещи чувствительны к регистру, поэтому конструктор классов Bark должен называться Bark (), а не bark ().

0 голосов
/ 19 июня 2010

Эта функция является конструктором.Используется для инициализации объекта.

Конструктор

0 голосов
/ 19 июня 2010

это конструктор - все, что здесь вставлено, выполняется при создании экземпляра объекта

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