О соглашении об именах подчеркивания в PHP (как в _method или _property)

Это своего рода общее расследование, о котором я задавался вопросом. Я заметил многое из этого в коде других людей и никогда не знал реальной причины, просто следил за тенденциями, так что вот.

Почему некоторые методы и свойства имеют перед именами знак подчеркивания, а другие — нет? Например, когда конкретно следует использовать function _method() и когда следует использовать function method() или, другими словами, private $_someVariable против private $someVariable?


person Swader    schedule 23.04.2011    source источник


Ответы (5)


В большинстве случаев это возврат к PHP4, который не поддерживал видимость свойств или методов, и разработчики библиотек использовали _ для обозначения чего-то, что следует считать закрытым, а не доступным напрямую извне класса. В PHP5 есть видимость, но соглашение все еще часто соблюдается.

person Mark Baker    schedule 23.04.2011
comment
Никогда не понимал, что это было причиной этого, спасибо, что поделились этим. Я нахожу это полезным и до сих пор использую соглашение, однако оно позволяет закрытым методам делить имена с общедоступными и делает их немного выделяющимися. - person Wesley Murch; 23.04.2011
comment
@Madmartigan - это, безусловно, означает, что вызов частного метода или доступ к частному свойству из класса также мгновенно распознаются. - person Mark Baker; 23.04.2011
comment
Ясно спасибо! Это полезное понимание. Я буду придерживаться этого соглашения, я считаю его практичным и естественным. - person Swader; 24.04.2011

Теперь, в 2013 году, это официально считается плохим стилем в соответствии с руководством по кодированию PSR-2:

Имена свойств НЕ ДОЛЖНЫ иметь префикс с одним подчеркиванием для обозначения защищенной или частной видимости.

Источник: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

person Sliq    schedule 29.09.2013
comment
Какова причина этого соглашения? Я не мог видеть ни одного с первого взгляда. - person w5m; 04.12.2013
comment
@ w5m Я не знаю, но вы можете спросить у парней из PSR, они обычно отвечают на вопросы очень быстро и публично (где-то у них есть группа в Google). - person Sliq; 04.12.2013

***Следуйте рекомендациям по кодированию PSR-2:

Имена свойств НЕ ДОЛЖНЫ иметь префикс с одним подчеркиванием для обозначения защищенной или частной видимости.

Источник: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md

***Причина :

Не используйте символы подчеркивания перед именем свойства, например $_income, вместо этого используйте $income. Подчеркивание использовалось в некоторых фреймворках, и его можно спутать с магическими переменными PHP.

Источник: http://www.geekgumbo.com/2013/05/19/psr-2-coding-style-guide/

person Luong Tran Nguyen    schedule 04.07.2017

Это официальный документ с php.net. не говоря уже о подчеркивании перед private методами, private полями.

Но следуйте Соглашение о кодировании Zend Framework:

Для методов объектов, объявленных с модификатором private или protected, первым символом имени метода должен быть знак подчеркивания. Это единственное приемлемое применение символа подчеркивания в имени метода. Методы, объявленные как общедоступные, никогда не должны содержать символ подчеркивания.

Следовательно, мы должны начать называть метод private с подчеркивания :)

Примечание:

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

(Источник: http://php.net/manual/en/userlandnaming.rules.php< /а> )

person Do Nhu Vy    schedule 11.04.2015