[英]PHP use namespace class inside method in a class of another namespace
是否可以通過某種方式實例化名稱空間內的類,在另一個名稱空間內的另一個類的方法中? 並從變量實例化請求的類?
范例 :
要從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']();
}
}
抱歉,我的表述有點令人困惑,但我想不出更好的方法來提問。
謝謝。
這是在命名空間中加載的一般方法: http : //www.php.net/manual/en/function.spl-autoload.php
但是,有一種使用Composer的更流行的方法。
php composer.phar init
src
目錄,然后將其添加到您的composer.json文件中,該文件生成: "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
以查看完整的框架示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.