是否有可能以某种方式在另一个名称空间内的另一个类中的方法中实例化名称空间内的类?并且从变量?
实例化请求的类示例:
要从loader-class 加载的类:
namespace application/pages;
class loader
{
private function __construct()
{
echo 'Class loaded...';
}
}
装载机级:
namespace system/loader;
class loader
{
private $vars;
private function __construct($vars)
{
$this->vars = $vars;
}
private function load_class()
{
require(CLASSES . $this->vars['namespace'] . '/' . $this->vars['class'] . ".php");
use $this->vars['namespace'];
return new \$this->vars['namespace']\$this->vars['class']();
}
}
对于有点令人困惑的表述感到抱歉,但我想不出更好的方式来提问。
感谢。
答案 0 :(得分:1)
这是加载命名空间的一般方法: http://www.php.net/manual/en/function.spl-autoload.php
然而,有一种更流行的方法是使用Composer。
php composer.phar init
src
目录,然后将其添加到生成:"autoload": { "psr-0": { "": "src/" } }
您的composer.json文件现在应如下所示:
{
"name": "acme/sample",
"authors": [
{
"name": "Person",
"email": "person@example.com"
}
],
"minimum-stability": "dev",
"autoload": {
"psr-0": { "": "src/" }
},
"require": {
}
}
运行:php composer.phar install
,它将生成供应商目录和自动加载脚本。
创建主要加载php文件并在其中包含autoload.php文件。
现在,src目录中的命名空间和供应商中的任何导入库都将公开给您的应用程序。
结帐symfony/symfony-standard
以查看完整的框架示例。