Например, у меня есть класс, который говорит, что выполняет запрос MySQL, и я хочу инкапсулировать этот класс.Является ли это хорошей практикой для инкапсуляции в PHP?
class SqlQuery {
private $database_connection_obj;
public function __construct($dbh) {
$this->$database_connection_obj = $dbh;
}
public function runQuery($query, $params) {
//run query implementation...
}
}
инкапсуляция и сокрытие информации означает, что я хочу, чтобы закрыть прямой доступ к методам класса, поэтому функция runQuery()
не должна быть публичной, поэтому я сделать его приватным и добавить метод exacuteQuery()
с единственной целью передать данные частной функции runQuery()
.
Каково практическое применение этого, потому что в конце оно работает точно так же, как и код выше. Должна ли быть какая-то санитария входных данных, выполненных в открытом методе, перед ее передачей частному методу или зачем вообще писать этот дополнительный код?
class SqlQuery {
private $database_connection_obj;
public function __construct($dbh) {
$this->$database_connection_obj = $dbh;
}
public function exacuteQuery($external_query, $external_params) {
$this->runQuery($external_query, $external_params);
}
private function runQuery($query, $params) {
//run query implementation...
}
}
Я не вижу никаких причин для переноса 'runQuery()' в данный код. Почему, по-вашему, вам нужно усложнить свой код такой оболочкой? =) –
Какова инкапсуляция, тогда вы можете привести мне пример. –