我最近阅读了opencart源代码,发现这段代码对我来说很奇怪
class Customer {
private $customer_id;
private $firstname;
private $lastname;
private $email;
private $telephone;
private $fax;
private $newsletter;
private $customer_group_id;
private $address_id;
public function __construct($registry) {
$this->config = $registry->get('config');//no config property in the class
$this->db = $registry->get('db');//no db property in the class
如何使用$ this->(无存在属性)来添加新属性?如果可以,使用此方法的优点是什么,而不是使用通用方法在类中声明这些属性喜欢
private $config;
private $db;
答案 0 :(得分:3)
这是一个错误。 PHP 允许使用您尚未声明的属性。
$config
和$db
都是公开的,因为这是默认声明。
没有充分的理由使用未声明的属性。
这门课看起来很糟糕。输入为registry
,但只需要"config"
和"db"
,所以为什么不签名:
public function __construct(DB $db, Config $config)
您还可以想知道名为Customer
的对象(看起来像数据包装器)是否应该被赋予DB
个对象。
基于所有其他私有变量,$db
和$config
实际上似乎没有任何用处,因为它只是平面数据。