2013-08-26 42 views
2

來自Python我想弄明白php使用命名空間的方式。在Python中,我只需導入如下:php文件如何在其他php文件中找到命名空間?

import someModule 
from anotherModule import someClass 

這種工作方式就像一個魅力,完全像任何人所期望的一樣。

另一方面,我們有類似命名空間的東西。據我瞭解,我可以在myModule.php像這樣的頂級定義一個命名空間:

namespace myNamespace; 

如果我是正確的,這意味着該文件中的代碼可以被稱爲(或進口)通過這樣做在另一個myWorkingCode.php中的名稱「myNamespace」:

use myNamespace; 

所以我的問題; myWorkingCode.php如何找到myModule.php?它是否需要在同一個文件夾中才能正常工作,還是需要執行其他任何操作?

+0

檢查[此評論](http://www.php.net/manual/en/language.namespaces.importing.php#113069)和[這一個](http: //www.php.net/manual/en/language.namespaces.importing.php#105394) – Voitcus

回答

2

php中的使用函數完全不同於python中的導入。

用於在非常長的名稱空間中創建別名。例如:

use \My\Very\Long\Omg\Its\Sooooo\Long\How\Stupid as veryshort; 

現在名稱空間veryshort下的那個長命名空間內的每個類都可用。更多信息:http://php.net/manual/en/language.namespaces.importing.php

那麼,如何找到正確的文件?它沒有。您必須自己包含它,但是如果您對文件使用強命名慣例,則可以使用帶有spl_autoload_register功能的自動加載器。一個很好的標準可以在這裏找到:http://www.php-fig.org/psr/0/

+1

啊好的。我慢慢理解了它。所以如果我想從一個php文件導入類,我總是必須手動包含()該文件的權利?並且命名空間的添加只是爲了避免命名空間與其他包含文件可能具有相同名稱的文件發生衝突。我對麼? – kramer65

+0

是的,你是對的。 – Pinoniq