在引用另一个类的构造器中构建的 PHP 类中可访问的变量


variable accesible in php class built in the construtor that references another class?

所以,简而言之,我希望我的登录类不必在函数中创建数据库类的新实例。目前我正在尝试这样做:

<?php
class siteLogin
{
private $db;
private $dataStore;
function __construct()
{
    if (!isset($_SESSION)) {
        session_start();
    }
    require_once '../application/db.php';
    $this->$db = new DB();
    require_once '../application/data.php';
    $this->$dataStore = new Data($db);
}

但是我得到错误:

 Fatal error: Cannot access empty property in C:'var'www'sexdiaries.co.uk'class'siteLoginClass.php on line 16

我想给$this->$db一个参考siteLogin类。

您没有对属性使用正确的表示法。试试这个:

$this->db = new DB();
$this->dataStore = new Data($db);

它们不像普通变量那样以$为前缀。这是因为您可以在 PHP 中使用变量属性名称,例如

$foo = 'db';
echo $this->$foo; // equivalent to `echo $this->db;`

在您的情况下,$db是一个未定义的变量,它被初始化为空字符串(尽管会触发 PHP 通知 - 您是否有错误报告?),因此您有效地尝试访问同名的属性,因此错误Cannot access empty property