[英]Where should I use 'use' in php?
據我所知,PHP的use
是大多數使用的時間(沒有雙關語意),縮短命名空間中的類名稱的用法。 我的問題如下:我有一個可以使用大約300-400個類的項目。 所有這些類均已命名空間,並放置在各自的目錄中,因此,在確實需要時,已注冊的自動加載可以包括它們,從而避免了在不一定需要它們時加載一堆文件的開銷。
現在,我想使用use
來縮短一些類名,這樣我可以更快地編寫代碼。 我的問題如下:
我應該在哪里use
以縮短這些時間?
是否應該將它們直接放在定義了需要縮短的類的腳本文件中?
我可以在定義所有use
命令的地方創建一個單獨的文件嗎?
我更喜歡第二種選擇,我唯一不知道的是,如果我那樣做,php是否不會加載我作為參數使用的所有文件?
例如,如果我做這樣的事情:
use My\Class\Path\Class as Class;
use My\Class\Path\Class2 as Class2;
將立即包含兩個對象Class
和Class2
的定義的兩個文件,或者僅當我稍后在代碼中編寫類似於new Class()
東西時才Class2
兩個文件包含在內。
為了使第二點更清楚,這是一個文件namespacetest.php
內容:
namespace x {
class a {}
}
namespace y {
use x\a;
class b extends a {}
}
namespace {//global namespace
use y\b as a;
new a();
}
您可以知道將每個名稱空間塊放置在單獨的文件中,並且其工作方式相同。
有關的內容include
:
假設我們有一個文件inctest.php
其中<?php $var=123; ?>
<?php $var=123; ?>
。
如果我們以這種方式包括:
function yxz(){
include 'inctest.php';
}
我們在名為$var
的函數中創建一個局部變量。
如果我們這樣做
function xyz(){}
include 'inctest.php';
我們在php中創建了一個名為$var
的全局變量。
在最低級別include
僅合並php腳本! 如果腳本定義/聲明了類/函數,則只會聲明/定義。 但是,當腳本中包含的是全局代碼(不在函數中)時,這很大程度上取決於您包含它的位置,所包含的代碼/腳本如何工作。 (請參見上面的示例)
使用這種方式(以下示例:)進行更多說明,請訪問( http://php.net/manual/en/language.namespaces.faq.php#language.namespaces.faq.innamespace )
<?php
namespace foo;
use blah\blah as foo;
$a = new name(); // instantiates "foo\name" class
foo::name(); // calls static method "name" in class "blah\blah"
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.