【发布时间】:2012-09-30 04:48:10
【问题描述】:
我一直致力于在 PHP 中迁移到 OOP。我在 php.net 上阅读了解释,但我希望我能在这里得到一些具体的答案。
我尝试创建以下示例来说明我的问题。假设我有“数据库”、“产品”和“用户”类,如果用户有权访问,我想显示产品。
所以我将“Products”类称为“showProducts()”函数,该函数依次创建“User”类的实例,该实例创建“Database”对象的实例并检查用户访问级别。
如果用户有访问权限,那么“showProducts()”函数会创建“Database”对象的另一个实例,并查询数据库。
class Database{
public function query(){
//runs query here
}
public function __construct() {
//sets up connection here
}
}
class User{
public function checkAccess(){
$db = new Database();
$db->query( //pass in query to check access )
//does stuff, then returns true or false
}
}
class Products{
public function showProducts(){
$user = new User();
if($user->checkAccess())
$db = new Database();
$db->query( //pass in query to get products )
}
}
我希望有人能说明如何以正确的方式做到这一点。
我想要某种控制器类,它创建一个“数据库”对象,可供所有需要访问它的类使用,而无需创建“数据库”对象的多个实例。我想要用户类也一样,所以有一个所有类都可以访问的 $users 对象,而不必每次我需要在“用户”类中使用某些东西时都创建一个新对象。
如果我的问题不清楚,我深表歉意,并提前感谢您的任何回复!
感谢大家的回复!
【问题讨论】: