例えば、私はクラスが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()
はので、私はそれをプライベートにし、プライベート関数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()'をラップする理由はありません。なぜあなたはその種のラッパーでコードを複雑にする必要があると思いますか? =) –
カプセル化とは何ですか?私に例を挙げてください。 –