這個問題有點奇怪,很難解釋,所以我會盡我所能。PHP從文件中排除命名空間的使用情況
基本上,我一直想知道如何在自己的文件中實際使用類,然後在別處使用該類的名稱空間。
作爲一個大多數PHP開發人員可能知道的例子,就像Laravel對路由所做的一樣,您有routes.php文件僅用於路由,沒有在頂部定義的名稱空間,例如:use Acme\Router
- 但是,該類仍然有效並且不會不吐錯誤。這是如何完成的?
例
我的指數載荷作曲家自動加載並裝入我的應用程序類
<?php
// Used namespace here to actually make it function
use Acme\Application as App;
require_once __DIR__ . '/vendor/autoload.php';
$app = new App;
$app->launch();
的推出是對的東西,應用程序應該做的一經推出,在這裏,我在想裝(我不確定這是否是正確的方法來處理這個問題,但這是我的最佳拍攝)。
這個類是這樣的:
<?php
namespace Acme;
class Application
{
public function __construct()
{
}
public function launch()
{
// Require routes etc.
}
}
我最初的想法是需要這些文件,但我認爲在一個方法中對require
文件是一個壞習慣。即便如此,這也將成爲它應該要求的巨大清單。
但是無論我曾嘗試沒有成功,我所試圖做的是避免在我的routes.php文件use
或等,以避免事情的清單我想用如:
use Acme\Database\Handler;
use Acme\Router;
,因爲從長遠來看,這可以成爲非常巨大的。
我在做什麼錯,我該如何處理這個問題?
如果你想避免使用需要,你當然應該查找SPL自動加載。這裏有一個很好的標準:https://gist.github.com/jwage/221634。大多數圖書館應符合這種模式(或類似的東西,並附帶自己的自動加載器)。它不能解決你的命名空間問題,但確實有助於解決這個需求。 – 2014-12-08 09:35:35
我目前使用作曲家和psr-4自動加載。這恐怕不是我的問題,它使用的是在其他文件中有名稱空間的類,而沒有在頂部使用''use'的長列表。 – 2014-12-08 09:38:19
在這種情況下,您可能希望從您的問題中刪除對「require」的引用 - 它肯定會讓我困惑! – 2014-12-08 09:39:13