[英]How To Make Composer (PSR-4) To Work With ".class.php" Extension?
[英]Use '.class.php' extension for PHP classes?
通常的做法是為PHP類添加'.class.php'擴展名嗎?
在PHP.net上: http : //php.net/manual/en/function.spl-autoload-register.php有一些這樣的例子:
// Or, using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
它使用.class.php
擴展名。
PHP代碼應該像這樣編寫嗎? 我以前從未見過它,它是新的嗎? 這是PHP中的一種新功能,也許它是?
編輯 :'功能'不是一個好詞! 也許我應該問這是一些標准還是慣例。
謝謝。
這不是一個功能,它只是一個你不時會出現的慣例。 是否遵循它是您和您的團隊的選擇。
我個人的意見是,由於選擇是任意的,這種特殊的風格與PSR-0自動加載器規范相矛盾,你應該通過,因為:
這主要用於確保自動加載器所針對的類文件,您經常有其他.php文件,如模板,腳本,如bootstrapping或配置文件,它們是.php文件,但絕不應該被解釋為類
這不是一個功能,它只是一種非常簡單,實用的方法來保持您的代碼組織,更重要的是,避免自動加載的問題。
假設您有一個名為User
類,並且您的站點有一個頁面,該頁面由腳本生成: User.php
。 如果需要User
類的實例,將調用自動加載器函數,並將User
作為參數。 在查找名為User.php
的文件時,您可能包含一個文件,而不是類定義。 這就是為什么你可以(並且應該)在他們的名字中給出一些額外的類定義。 然后你可以編寫自動加載器來查找[[class name]].class.php
,整齊地避開User.php
文件。
這是它的底線。 當然 - 還要考慮名稱空間,以及保持代碼組織的最現代的方式:目錄( set_include_path
)
對於包含類的php文件,使用.class.php擴展名絕對不是必需的。 但它也不會破壞任何東西。
這是為了更好地理解這些文件的全部內容。 所以,當你看到filename.class.php時,你知道,這個文件包含類文件名。
如果您將類命名為class.php,則不會觸發任何特殊語言支持; 它只是一個約定,比如你是否使用空格或制表符進行縮進。
在我工作的一個項目中,名為* .inc.php和templates * .tpl.php的類。
如果我在大約1999年編寫PHP,這將是一個很好的慣例。 您可以根據需要命名文件,但我建議只在文件中的類名后面命名,並附加“.php”。
這更多是個人偏好,但我實際上可能會研究PSR-0標准,它為您提供了一種標准方法,可以為您的類命名和命名空間,以便以相同的格式提供與其他人代碼的更好兼容性。
在PSR-0標准中,PHP文件以類命名,並放入與命名空間相關的文件夾中。
我建議在PHP.net手冊中提到的.class.php
方法中采用這種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.