簡體   English   中英

PHP在另一個名稱空間的類中的方法內部使用名稱空間類

[英]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的更流行的方法。

  1. 下載composer.phar並在項目目錄中運行: php composer.phar init
  2. 跟隨互動。
  3. 在您的項目根目錄中,創建一個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": {

    }
}
  1. 運行: php composer.phar install ,它將生成供應商目錄和自動加載腳本。

  2. 創建您的主要加載php文件,並在其中包含autoload.php文件。

現在,您的src目錄中的名稱空間以及供應商中任何導入的庫將公開給您的應用程序。

簽出symfony/symfony-standard以查看完整的框架示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM