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()
みたのですが、よくわからないと思います。
それが私の仕事に私を抑えているので、私はこれを理解できることを願っています。前もって感謝します。