【发布时间】:2011-01-25 14:02:19
【问题描述】:
我有这个类,它具有加载其他类和创建实例的功能。
如果你像这样使用这个类:
$test = new test();
$test->load("email");
它按预期完美运行 但是当使用 session_start();
$test = new test();
session_start();
$test->load("email");
创建了一个错误,并且没有其他内容: PHP致命错误:在bla bla bla中的非对象上调用成员函数load()
与 session_start 一起使用的类:
<?php
class test
{
function load($class){
static $objects = array();
if (isset($objects[$class]))
{
return $objects[$class];
}
require('libraries/'.$class.'.php');
$name = 'ext_'.$class;
$objects[$class] =& new $name();
$this->$class = $objects[$class];
return $objects[$class];
}
}
$test = new test();
session_start();
$test->load("email");
?>
这里是库/email.php:
<?php
class ext_email
{
function ext_email(){
echo "email is working";
}
}
?>
你能告诉我这有什么问题吗?有什么方法可以提高负载功能? 这件事适用于某些 apache 安装,但无法在其他安装上运行。取决于一些我不知道到底是什么的配置..
我希望能够做到以下几点: $test = new test();
session_start();
$test->load("email");
非常感谢
【问题讨论】:
-
有趣的是,作为一个临时解决方案,您不能将
session_start调用放在代码的绝对顶部吗? -
对我来说效果很好。也许您应该在调用
session_start()之前和之后在$test上尝试var_dump,看看有什么变化。 -
不,我不能移动 session_start(),即使我将 session_start 移动到顶部也总是一样