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