Почему мой конструктор все еще звонит, даже если случай класса и конструктора отличается?

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

class Registration{ function registration(){ echo "Constructor is called."; } } $obj = new Registration(); //$obj->registration(); 

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

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

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

 CLASS REGISTRATION { FUNCTION reGISTration(){ ECHO "constructor is called."; } } $obj = NEW Registration(); 

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

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

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

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

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

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

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

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

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

 class Dog{ function dog(){ echo "Constructor is called."; } } $obj = new Dog(); $obj->dog();