我正在用 PHP 制作一个框架。我在 library/core.php 中有一个导入函数。
我可以使用这样的功能:
$core->import("someclass");
这是功能:
public function import()
{
$import_resources = func_get_args();
$check_directories = array("library", "template", "view", "action", "errors");
$instances = array();
foreach($import_resources as $resource)
{
for($i = 0; $i <= count($check_directories) - 1; $i++)
{
if(file_exists($this->appRoot() . $check_directories[$i] . "/" . $resource . ".php"))
{
$classes = get_declared_classes();
include ($check_directories[$i] . "/" . $resource . ".php");
$included_classes = array_diff(get_declared_classes(), $classes);
$last_class = end($included_classes);
$last_class_lowercase = strtolower($last_class);
$this->$last_class_lowercase = new $last_class();
// create an instance of the included class and attach it to the Core Class
}
else
{
}
}
}
}
所以在另一个类中,我可以这样使用它:
$core->import("view");
$core->view->get();
这样做的重点是使包含的类在扩展时在另一个类中可用。
class Someclass extends Core
{
public function somefunc()
{
$this->view->get(); // This does not work.
}
}
我怎么能让它像这样工作?这是框架中非常重要的部分,因为它是这样工作的。我认为它在 CodeIgniter 等流行框架中的工作方式也类似。
我试图使用parent::view->get()
,但我想我并不完全理解它。
我希望我能解决这个问题,因为它阻碍了我的工作。先感谢您。