我一直在努力转移到 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 对象,而不必每次我需要在“用户”类中使用某些东西时都创建一个新对象。
如果我的问题不清楚,我深表歉意,并提前感谢您的任何回复!
感谢大家的回复!