【发布时间】:2017-03-16 02:55:11
【问题描述】:
例如,我有一个运行 MySQL 查询的类,我想封装这个类。
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()包装在给定的代码中。为什么你认为你需要用这种包装器使你的代码复杂化? =) -
什么是封装,你能举个例子吗?
标签: php class oop encapsulation