예를 들어 클래스에 MySQL 쿼리를 실행하고이 클래스를 캡슐화하려고합니다. 내가 기능 runQuery()
이 공개해서는 안 클래스 메소드에 직접 액세스를 닫으려면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()
를 추가합니다.
마지막으로 위의 코드와 똑같이 작동하기 때문에 실제 사용하는 것은 무엇입니까? 개인용 메서드에 전달하기 전에 공용 메서드에서 입력 데이터의 위생이 이루어 지거나이 추가 코드를 작성해야하는 이유는 무엇입니까?
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()'를 감쌀 이유가 없습니다. 왜 그런 종류의 래퍼로 코드를 복잡하게 만들 필요가 있다고 생각합니까? =) –
캡슐화가 무엇인지 예를 들어 주시겠습니까? –