Как обстоят дела с лидирующим подчеркиванием в методах класса PHP? - PullRequest
145 голосов
/ 19 марта 2009

Просматривая различные библиотеки PHP, я заметил, что многие люди предпочитают префикс некоторых методов класса с одним подчеркиванием, например

public function _foo()

... вместо ...

public function foo()

Я понимаю, что в конечном итоге это сводится к личным предпочтениям, но мне было интересно, кто-нибудь имел некоторое представление о том, откуда эта привычка.

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

Любые мысли, идеи и / или мнения будут оценены.

Ответы [ 13 ]

3 голосов
/ 01 ноября 2013

В Drupal (php CMS) можно использовать подчеркивание для предотвращения вызова хуков (https://api.drupal.org/api/drupal/includes!module.inc/group/hooks/7).

Если у меня есть модуль с именем «my_module» и я хочу назвать функцию my_module_insert, он «зацепит» функцию hook_insert. Чтобы предотвратить это, я могу переименовать свою функцию в _my_module_insert.

п.с. Как работают хуки в Drupal, можно реализовать хук по ошибке, что очень плохо.

0 голосов
/ 23 февраля 2017

Использование подчеркивания просто для запоминания, что мы не будем «модифицировать переменную» / «вызывать функцию» вне класса.

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

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