php 实例化变量对象吗,php – 从变量实例化新对象

参见英文答案 >

Call to a member function on a non-object                                    8个

我正在使用以下类来自动加载我的所有类.这个类扩展了核心类.

class classAutoloader extends SH_Core {

public function __construct() {

spl_autoload_register(array($this, 'loader'));

}

private function loader($class_name) {

$class_name_plain = strtolower(str_replace("SH_", "", $class_name));

include $class_name_plain . '.php';

}

}

我在我的核心类的__construct()中实例化该类:

public function __construct() {

$autoloader = new classAutoloader();

}

现在我希望能够在loader类中实例化对象,如下所示:

private function loader($class_name) {

$class_name_plain = strtolower(str_replace("SH_", "", $class_name));

include $class_name_plain . '.php';

$this->$class_name_plain = new $class_name;

}

但我得到以下错误调用$core-template,如下所示:

require 'includes/classes/core.php';

$core = new SH_Core();

if (isset($_GET['p']) && !empty($_GET['p'])) {

$core->template->loadPage($_GET['p']);

} else {

$core->template->loadPage(FRONTPAGE);

}

错误:

Notice: Undefined property: SH_Core::$template in /home/fabian/domains/fabianpas.nl/public_html/framework/index.php on line 8

Fatal error: Call to a member function loadPage() on a non-object in /home/fabian/domains/fabianpas.nl/public_html/framework/index.php on line 8

它自动加载类,但只是不启动对象,因为使用以下代码它没有任何问题:

public function __construct() {

$autoloader = new classAutoloader();

$this->database = new SH_Database();

$this->template = new SH_Template();

$this->session = new SH_Session();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值