使用另一个类中的类的函数而不扩展?

时间:2014-06-25 17:08:48

标签: php oop pdo attributes extend

我有多个课程,在这种情况下是CoreUser。目前UserCore的扩展。Core。在__construct中,我有多个类所需的主要功能,例如通过PDO的数据库连接。我使用User函数来构建数据库连接,没有问题。

但是,在我的__construct课程中,我想通过Core将值传递给多个属性。例如,名字,姓氏,电子邮件,密码和一些其他属性。

执行此操作时,我收到来自Netbeans的警告,应该使用父构造函数,以及许多模糊错误,我不会要求您修复这些错误。

我想知道是否有一种方法可以使用Userabstract class Core implements ICore { private $_dbcon; public function __construct($_database){ $this->_dbcon = $_database; } public function _connectDB(){ return $this->_dbcon; } class User extends Core implements IUser { public $_username; private $_password; protected $_email; protected $_adres; protected $_phone; protected $_contactperson; protected $_company; protected $_kvk; public function __construct($_username, $_password, $_email, $_adres, $_phone, $_contactperson, $_company, $_kvk){ $this->_username = $_username; $this->_password = $_password; $this->_email = $_email; $this->_adres = $_adres; $this->_phone = $_phone; $this->_contactperson = $_contactperson; $this->_company = $_company; $this->_kvk = $_kvk; } 的数据库连接功能,而无需进行扩展。我希望通过一些背景信息可以更清楚了!

在两个班级下方,仅显示与问题相关的部分:

{{1}}

1 个答案:

答案 0 :(得分:0)

你必须调用父构造函数。

class User extends Core
{
    public function __construct($db, $username, ...)
    {
        parent::__construct($db);

        $this->_username = $_username;
        ...          
    }
}

但在你的情况下,我会考虑更好的整体设计。阅读Dependency injection。这样,您只有一个数据库连接,并在其他类中使用该连接。

class User
{
    protected $db;

    public function __construct(Db $db)
    {
        $this->db = $db;
    }
}