Я читал, что методы и переменные-члены являются общедоступными по умолчанию в PHP, но многие примеры кода, на которые я смотрю, имеют public
ключевое слово впереди. Например:
class SomeClass { public $data; public function someFunction() { } }
Есть ли причина использовать ключевое слово public
перед именами методов и членов в PHP или ясность – единственная причина, по которой некоторые люди это делают?
Есть ли причина использовать ключевое слово
public
перед именами методов и членов в PHP или ясность – единственная причина, по которой некоторые люди это делают?
Причина в ясности.
Люди кодируют этот материал. Людям нужно читать это. И если человек не может быстро расшифровать то, что происходит, отсутствие ясности может вызвать больше проблем.
Это связано с тем, что мы также отформатируем и отформатируем код. Переводчик языка будет съедать любой код, если синтаксис правильный. Все остальное, включая комментарии, помещается туда, так что куски мяса перед клавиатурой могут действительно иметь некоторое представление о том, что происходит.
Используя пример псевдокода:
class SomeClass { public $data; public function someFunction() { } }
Посмотрите, как легко это прочитать и понять, как это работает! Для сравнения, посмотрите на это:
class cName { $d; function fName() {} }
Технически говоря, оба фрагмента кода должны работать одинаково. Но что такое $d
? И что такое cName
? А что такое fName
? Код будет работать в обоих случаях, но кто хочет провести какое-то время, распутывая второй пример. Я имею в виду, это работает, правильно?
Ясность – настоящий ключ к хорошему кодированию и разработке. Это мировое программирование и компьютерная работа невидимы, а иногда – тупые, как есть. Нет причин скрывать, как что-то работает, просто игнорируя тот факт, что люди, а не машины, создают код.
Нет никакой функциональной разницы между указанием «public» и «нет». Из-за этого нет никакой пользы для кода, и из-за этого нет никакой деградации.
Просто помните, что ваш код записывается для двух объектов: компилятора и для людей, которым необходимо поддерживать код. Эта ясность огромна.
Мое личное мнение состоит в том, что лучше быть явным. Нет двусмысленности. Я также считаю, что все переменные-члены должны быть либо защищены, либо приватными с соответствующими геттерами / сеттерами.
Он также помогает в документации вашего кода – например, DOxygen