page.php(示例控制器页面)作为http://page/view/
打开
class page extends fwcontroller
{
public function __construct()
{
parent::__construct();
}
public function view()
{
$this->load->library("uri"); #DOESN'T WORK
var_dump($this->load->library("uri")); #DOESN'T WORK
}
}
fwcontroller.php(ControllerHook,(它在/fw/fwcontrollerphp上),我不想移动到另一个文件夹!)
class fwcontroller extends core
{
public $load;
public function __construct()
{
$this->load = new loader;
var_dump($this->load->library("uri")); #OK
}
}
loader.php(loader库,(位于/fw/loader.php上),我不想移动到另一个文件夹!)
class function loader
{
public function library($url)
{
return $url;
}
}
我不想通过$this->load->library("uri")
在页面控制器上加载实例并返回"ok"。但是,如果我的实例像"$this->loader=new loader",但只在页面上有效。php而不是在fwcontroller.php上。
第一:请启用错误报告。你的语法太离谱了。
public function page extends fwcontroller
应为:
class page extends fwcontroller
和
public fwcontroller extends core
应为:
class fwcontroller extends core
和
public function loader
应为:
class loader
另一件事,最好做:
public function __construct(loader $loader) // or even better create a interface
{
$this->load = $loader; // dependency injection is always better for among other thing testability
var_dump($this->load->library("uri")); #OK
}
编辑
如何创建页面类的实例?
我猜你做的是:$instance = new page;
而不是:$instance = new page();
。因为它只是起作用。
class /* NOT public function */ page extends fwcontroller
{
public function __construct() {
parent::__construct();
}
public function view()
{
$this->load->library("uri"); // should work now
var_dump($this->load->library("uri")); // should work now
}
}
(纠正其他未命中类型!)
并使用带有自动加载功能的命名空间(+依赖项注入:p)。