通过类的PHP类变量继承扩展

时间:2016-01-24 12:49:35

标签: php oop

我有两节课; userFunctionuserDatabase

class userDatabase {
        protected $database = 'btc.db';
        protected $short;
        protected $salt;
        function __construct(){
            $this->short = $this->salt = bin2hex(random_bytes(6));
        }
}
class userFunction extends userDatabase {
    function __construct(){
        $this->database.PHP_EOL;
        $this->short.PHP_EOL;
        $this->salt.PHP_EOL;
    }
}

$r = new userFunction;
var_dump($r);

输出如下:

object(userFunction)#1 (3) {
  ["database":protected]=>
  string(6) "btc.db"
  ["short":protected]=>
  NULL
  ["salt":protected]=>
  NULL
}

这并不是我所期待的。据推测,我设置$this->short$this->salt从二进制数据生成随机6字符随机hex salt。我扩展了userDatabase类,将变量继承到userFunction,我希望能够通过$this->salt$this->short __construct()内的userFunction来调用这些变量}。但是,变量返回为NULL

我一直在寻找答案,为什么会这样,但我似乎无法正确地制定查询,因为我老实说不确定这里发生了什么。 。 This seems to be a related issue, but I'm not entirely sure.具体来说,是否有可能完成我尝试以这种方式做的事情?每个类中$this->salt$this->short的每个实例是相同的,还是它们都不同?我如何修复NULL问题?

我感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

当您覆盖孩子的__construct(或任何其他方法)时,父母的方法不会被调用 - 除非您明确这样做。

class userFunction extends userDatabase {
    function __construct(){
        parent::__construct();
        $this->database.PHP_EOL;
        $this->short.PHP_EOL;
        $this->salt.PHP_EOL;
    }
}