Подтвердить что ты не робот

Почему двойной символ подчеркивания (__) в php?

Вот несколько функций с двойными подчеркиваниями перед именем:

__construct, 
__destruct, 
__call, 
__callStatic, 
__get, 
__set, 
__isset, 
__unset, 
__sleep, 
__wakeup, 
__toString, 
__invoke, 
__set_state 
__clone

Мне нужно только знать, почему этот знак подчеркивания используется перед этими функциями.

4b9b3361

Ответ 1

Как указано здесь:

PHP резервирует все имена функций начиная с __ как магический. это рекомендуется не использовать имена функций с __ на PHP, если вам нужна документальная магия Функциональность

Короче говоря, PHP называет эти функции неявно, и вы не должны использовать это соглашение об именах самостоятельно.

Ответ 2

Underscoritis. В PHP подчеркивания использовались в разных местах, например, в качестве префикса в суперглобальных объектах $_XYZ.

Имена методов, которые вы указали, являются магическими методами. Чтобы они выглядели немного более особенными, они были префиксами с двумя символами подчеркивания. - То, что обычно происходит, когда использование одного подчеркивания в качестве объявления уже слишком широко распространено. Этот шаблон именования не специфичен для PHP.

Вы все еще можете определить свои собственные функции с двумя ведущими __, но не следует избегать путаницы с реальными магическими методами или будущими языковыми расширениями. (Хотя это не очень вероятно.)