Подчеркнуть в функции PHP

Что это означает, когда имя функции PHP начинается с подчеркивания?

например: __construct()

Я знаю, что означает эта конструкция, но я видел другие места, где функция начинается с подчеркивания или двойного подчеркивания, и я просто не уверен в значимости.

5 ответов

Решение

Это означает, что PHP вызывает это неявно.

Это называется "магический метод"

Кроме того, это два подчеркивания, а не одно.

Узнайте больше здесь: PHP Magic Methods

В PHP функции, начинающиеся с двух подчеркиваний, обычно имеют особое значение. Из руководства:

PHP резервирует все имена функций, начинающиеся с __, как магические. Рекомендуется не использовать имена функций с __ в PHP, если вы не хотите документировать некоторые магические функции.

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

Смотри также: http://php.net/manual/en/language.oop5.magic.php

Существует также распространенное именование "стиль кодирования", в котором используется одно начальное подчеркивание для указания того, что методы или свойства являются частными / защищенными. Я думаю, что это довольно широко распространено.

Как отмечалось в других ответах, двойное подчеркивание используется для "магических" методов. Идея состоит в том, что пользователь никогда не будет намеренно использовать два подчеркивания для имени метода, поэтому существует небольшой риск столкновения. Я считаю, что это не единственное подчеркивание, потому что оно было популярным соглашением для частных методов в старые (плохие) времена, до того как появилось ключевое слово 'private' для обеспечения приватности ОО.

В codeigniter, если вы запустите метод в контроллере с подчеркиванием, маршрутизатор будет знать, что не разрешить доступ к нему из URL.

Другие вопросы по тегам