Два простых класса, один проверяет длину и возвращает true из false. Второй проверяет, вернул ли первый класс истину или ложь, и возвращает сообщение в зависимости от этого. Теперь мой вопрос: какая разница, выставляю ли я свои переменные как публичные, защищенные или приватные (примечание: я знаю, какие они есть).
Зачем мне это делать, кто, если я поставлю свои переменные как общедоступные, сможет получить к нему доступ?
Я знаю, что такое инкапсуляция и как она говорит о инкапсуляции всех учеников, но, похоже, в этом нет никакого смысла. Если бы это был IRL, я бы мог понять, что кто-то может забрать что-то из моего дома, поэтому я должен держать их всех запертыми ..но в программировании, кажется, нет никакого смысла ..
http://www.codeproject.com/Questions/161855/Encapsulation-and-why-we-must-use-it
Этот парень рассказывает кто-нибудь может получить доступ к ученикам, но кто они такие? Я думал, что PHP работает на сервере и доступ к нему ограничен по умолчанию. Никто кроме вас не может получить доступ / редактировать файл ..
class Length_class{
public $bus;
public $returned;
function __construct($bus){
$this->bus = $bus;
if($this->bus < 10){
$this->returned = false;
}else{
$this->returned = true;
}
}
}
class Length_class_extended extends Length_class{
function display_length(){
if($this->returned){
return "Length is $this->bus";
}else{
return "Length is $this->bus";
}
}
}
$Length_class_extended = new Length_class_extended(10);
echo $Length_class_extended->display_length();
Может быть, это не имеет смысла в этом маленьком кусочке кода. Но реальное приложение намного больше, чем то, над которым работает гораздо больше классов (и людей).
Безопасность, которую обеспечивает инкапсуляция, не связана с взломом вашего кода. Речь идет о ком-то, кто, как вы знаете, будет использовать ваш код, и вы хотите сказать, что он может или не может получить доступ.
Вы используете инкапсуляцию, чтобы указать, что ваш класс и что он должен делать. Это поможет вам определить обязанности ваших классов. И помогает другим разработчикам осознавать это без необходимости знать, как вы это реализовали.
Хорошо инкапсулированный код обеспечивает безболезненные (или, по крайней мере, менее болезненные) модификации класса.
Основная причина использования модификаторов доступа — когда вы предоставляете класс для использования кем-то другим. С инкапсуляцией другой программист может использовать ваш класс в своем коде, даже не зная, что происходит внутри вашего класса.
У него будет список используемых методов, и он будет взаимодействовать с классом только через этот интерфейс. Это заставляет его использовать метод «правильно» таким образом, чтобы не нарушить ни его программу, ни работу вашего класса.
Вам может показаться неуместным, если вы являетесь единственным человеком, использующим код, и это относительно простой проект, и вполне возможно написать функциональный код для каждого публичного участника — это, однако, хорошая практика и в любом случае стоит делать. Это вынуждает вас писать в «хорошем» стиле с реальной инкапсуляцией и впоследствии может избавить вас от головной боли, не давая вам злоупотреблять собственным классом, если вы хотите повторно использовать код в самых разных ситуациях.