Почему мой конструктор по-прежнему вызывается, даже если класс и регистр конструктора различаются? - PullRequest
4 голосов
/ 05 октября 2011

Меня удивляет, почему конструктор вызывается, когда у нас другое имя класса и конструктора.Имя конструктора начинается с маленькой буквы «r»?

class Registration{

    function registration(){
        echo "Constructor is called.";
    }
}

$obj = new Registration();
//$obj->registration();

Выходы: Вызывается конструктор.

Модификация: Учитывает ли это регистр символовповедение зависит от версий php, которые мы используем?

Ответы [ 4 ]

7 голосов
/ 05 октября 2011

php нечувствителен к регистру (иногда).Следующее будет работать также:

CLASS REGISTRATION {

    FUNCTION reGISTration(){
        ECHO "constructor is called.";
    }
}

$obj = NEW Registration();
7 голосов
/ 05 октября 2011

В php все имена функций не чувствительны к регистру .

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

0 голосов
/ 05 октября 2011

PHP нечувствителен к регистру, но это не объясняет поведение.

Это происходит потому, что функция с тем же именем класса рассматривается как конструктор.

См. http://php.net/manual/en/language.oop5.decon.php - Пример 2

Так что это верно для функций с любым именем, например:

class Dog{

    function dog(){
        echo "Constructor is called.";
    }
}

$obj = new Dog();
$obj->dog();
0 голосов
/ 05 октября 2011

Я думаю, что оба имени одинаковы.

, потому что, когда вы пытаетесь объявить класс с именем "registration" на той же странице, он выдаст вам ошибку, в которой говорится, что вы не можете повторно объявить класс..

в этом случае он не чувствителен к регистру

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