Представьте, что произойдет, если x [l] не является ни 0, ни 1 в цикле. В этом случае a и b никогда не будут назначены и имеют неопределенное значение. Вы должны инициализировать их как с некоторым значением, например 0.
Это с плохих былых времен Объектно-ориентированного PHP (PHP 4). Та реализация OO была довольно плоха, и не включала вещи как закрытые методы. Для компенсации разработчики PHP снабдили предисловием методы, которые были предназначены, чтобы быть частными с подчеркиванием. В некоторых более старых классах Вы будете видеть /**private*/ __foo() {
, чтобы дать ему некоторый дополнительный вес.
я никогда не слышал о разработчиках, снабжающих все их методы предисловием с подчеркиваниями, таким образом, я не могу начать объяснять, что вызывает это.
Начальные символы подчеркивания обычно используются для частных собственностей и методов . Не техника, которую я обычно использую, но действительно остаюсь популярным среди некоторых программистов.
Я использую начальный символ подчеркивания в классе PHP 5, который я пишу для закрытых методов. Это - небольшой визуальный индикатор разработчику, что конкретный участник класса является частным. Этот тип вывода подсказок не так полезен при использовании IDE, который отличает общедоступных и членов парламента, не занимающих официального поста для Вас. Я взял его со своих дней C#. Старые привычки...
Я полагаю, что Ваше исходное предположение было корректно, я нашел, что это обычная практика для некоторых языков для добавления префикса подчеркивания к методам/участникам и т.д., которые предназначены, чтобы быть сохраненными частными к "объекту". Просто визуальный способ сказать, хотя Вы можете, Вы не должны называть это!
Я считаю, что наиболее авторитетным источником подобных соглашений для PHP на данный момент является PSR-2: Руководство по стилю кодирования , поскольку Zend Framework является частью ] PSR :
Имена свойств НЕ ДОЛЖНЫ начинаться с одного символа подчеркивания, чтобы указать защищенную или частную видимость.
Я знаю это из python, где префикс ваших переменных с подчеркиванием заставляет компилятор транслировать некоторую случайную последовательность букв и цифр перед фактическим именем переменной. Это означает, что любая попытка обратиться к переменной извне класса приведет к ошибке "переменная не определена".
Я не знаю, используется ли это соглашение в python, хотя