Как обстоят дела с лидирующим подчеркиванием в методах класса PHP?

Представьте, что произойдет, если x [l] не является ни 0, ни 1 в цикле. В этом случае a и b никогда не будут назначены и имеют неопределенное значение. Вы должны инициализировать их как с некоторым значением, например 0.

146
задан Neel 11 September 2011 в 13:40
поделиться

6 ответов

Это с плохих былых времен Объектно-ориентированного PHP (PHP 4). Та реализация OO была довольно плоха, и не включала вещи как закрытые методы. Для компенсации разработчики PHP снабдили предисловием методы, которые были предназначены, чтобы быть частными с подчеркиванием. В некоторых более старых классах Вы будете видеть /**private*/ __foo() {, чтобы дать ему некоторый дополнительный вес.

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

148
ответ дан Jeremy DeGroot 11 September 2011 в 13:40
поделиться

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

12
ответ дан jonstjohn 11 September 2011 в 13:40
поделиться
  • 1
    @Christophe: that' s миф. Это применяется только к кэшируемым ресурсам. Вы don' t нужно это на ресурсе, который является уже не кэшируемым. Вы видите этот дополнительный заголовок часто, когда каждый сделал ошибку, что страницей неумышленно служили кэшируемая, и затем разработчик зафиксировал его путем создания его некэшируемым. Однако без тех 2 директив это все еще слонялось бы поблизости в IE, пока конечный пользователь явно не очищает кэш IE самих. – BalusC 15 July 2013 в 14:19

Я использую начальный символ подчеркивания в классе PHP 5, который я пишу для закрытых методов. Это - небольшой визуальный индикатор разработчику, что конкретный участник класса является частным. Этот тип вывода подсказок не так полезен при использовании IDE, который отличает общедоступных и членов парламента, не занимающих официального поста для Вас. Я взял его со своих дней C#. Старые привычки...

9
ответ дан GloryFish 11 September 2011 в 13:40
поделиться
  • 1
    @BalusC хорошо благодарит разъяснить это. – Christophe Roussy 15 July 2013 в 14:46

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

5
ответ дан Quintin Robinson 11 September 2011 в 13:40
поделиться

Я считаю, что наиболее авторитетным источником подобных соглашений для PHP на данный момент является PSR-2: Руководство по стилю кодирования , поскольку Zend Framework является частью ] PSR :

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

72
ответ дан 23 November 2019 в 22:15
поделиться

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

Я не знаю, используется ли это соглашение в python, хотя

4
ответ дан 23 November 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: