我正在将现有的网站从程序化PHP代码转换为OOP。我想设置一个Permissions类,其中包含与多个扩展类(即数据库,登录,验证等)相关的信息,例如$ USER数据。
我是否能够通过魔术方法__construct()在父类(即权限)中为子类(即数据库,登录,验证)设置类实例变量,并让它们出现在除了类之外的每个子类中参考
即。 '类数据库扩展权限'不包括Permissions :: $ db,否则会出现循环和错误。
示例代码段如下所示:
<?php
class Permissions {
protected $db = '';
protected $login = '';
protected $val = '';
protected $USER = array (); // i.e. $this->USER['id'], $this->USER['access-level']
public function __construct() {
$this->db = new Database();
$this->login = new Login();
$this->val = new Validation();
// Code to populate $this->USER
}
}
class Database extends Permissions {
// Code
}
class Login extends Permissions {
// Code
}
class Validation extends Permissions {
// Code
}
?>
每个子类只调用它需要访问的类是否更好?即。
<?php
class Permissions {
protected $USER = array (); // i.e. $this->USER['id'], $this->USER['access-level']
public function __construct() {
// Code to populate $this->USER
}
}
class Database extends Permissions {
// Code
}
class Login extends Permissions {
private $db = '';
public function __construct() {
$db = new Database();
}
// Code
}
class Validation extends Permissions {
public function __construct() {
$db = new Database();
}
// Code
}
?>