От себя!
Вы используете различные уровни защиты, чтобы указать, как вы хотите использовать класс.Если член класса protected
или private
, доступ к нему может получить только сам класс.Нет никакого шанса, что вы можете случайно напортачить значение этого члена из «внешнего» кода (кода вне класса).
Скажем, у вас есть член класса, который должен содержать только цифры.Вы делаете его protected
и добавляете установщик, который проверяет, что его значение может быть только числовым:
class Foo {
protected $num = 0;
public function setNum($num) {
if (!is_int($num)) {
throw new Exception('Not a number!!!');
}
$this->num = $num;
}
}
Теперь вы можете быть уверены, что Foo::$num
всегда будет содержать число, когда вы хотите работать с ним,Вы можете пропустить множество дополнительных кодов проверки ошибок, когда захотите их использовать.Каждый раз, когда вы пытаетесь присвоить ему что-либо, кроме номера, вы получите очень громкое сообщение об ошибке, которое позволяет очень легко находить ошибки.
Это ограничение, которое вы накладываете на себя, чтобы облегчить свою собственную работу,Потому что программисты делают ошибки.Особенно динамически типизированные языки, такие как PHP, позволяют молча совершать множество ошибок, не обращая на это внимания, которые впоследствии становятся очень трудными для отладки, очень серьезными ошибками.
По своей природе программное обеспечение очень мягкое и легко разлагается в неуправляемую логическую машину Рубе Голдберга.ООП, инкапсуляция, модификаторы видимости, подсказка типа и т. Д. - это инструменты, которые PHP дает вам для того, чтобы сделать ваш код "сложнее", выразить ваше намерение о том, что вы хотите, чтобы определенные части кода были, и включить PHP для обеспечения этогонамерение для вас.