0

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

<?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

4

1 回答 1

1

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

$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

于 2013-09-17T17:15:37.600 回答