![](/img/trans.png)
[英]Is there any difference between __DIR__ and dirname(__FILE__) in PHP?
[英]Difference between plugin_dir_path(__FILE__) and __DIR__
尾部斜杠'/'是這兩者之間的唯一區別嗎? 如果是這樣,我可以使用trailingslashit(__DIR__)
嗎?
/home/www/your_site/wp-content/plugins/your-plugin/includes/
這可用於加載 PHP 文件。
更多信息: https : //developer.wordpress.org/reference/functions/plugin_dir_path/
http://example.com/wp-content/plugins
更多信息: https : //codex.wordpress.org/Function_Reference/plugins_url
http://example.com/wp-content/plugins/
后兩者對於加載圖像、樣式表、JS 很有用。
更多信息: https : //codex.wordpress.org/Function_Reference/plugin_dir_url
plugin_dir_url(__FILE__)
此函數為您提供文件目錄的url 。
plugin_dir_url(__DIR__)
此函數為您提供url插件文件夾。
__FILE__
這個神奇的常量會給你文件所在的文件路徑。
__DIR__
這個神奇的常量會給你文件所在目錄的路徑。
trailingslashit(__DIR__)
這個函數將返回目錄的路徑和目錄的路徑后添加詞shash。
plugin_dir_path(__FILE__)
。 會給你與trailingslashit(__DIR__)
相同的結果。 我建議使用插件目錄路徑,因為它是一種 wordpress 方式。
讓我們解開正在發生的事情:
wordpress 函數就這么簡單:
function plugin_dir_path( $file ) {
return trailingslashit( dirname( $file ) );
}
所以,
include plugin_dir_path(__FILE__) . 'xx.php';
等於
include trailingslashit( dirname( __FILE__ ) ) . 'xx.php';
在 PHP 5.3 中, __DIR__
被引入作為dirname( __FILE__ )
的替代品。 如果你不需要支持 PHP < 5.3(你不需要),可以簡化為:
include trailingslashit( __DIR__ ) . 'xx.php';
(另請參閱: PHP 中的 __DIR__ 和 dirname(__FILE__) 之間有什么區別嗎? )
由於__DIR__
不返回帶有斜杠的內容,因此無需執行trailingslashit
。 所以我們可以進一步簡化為:
include __DIR__ . '/xx.php';
因此,總而言之,以下幾行都做完全相同的事情(在 PHP >= 5.3 上):
include plugin_dir_path(__FILE__) . 'xx.php';
include trailingslashit( dirname( __FILE__ ) ) . 'xx.php';
include trailingslashit( __DIR__ ) . 'xx.php';
include __DIR__ . '/xx.php';
哪個最好? 我更喜歡最后一個。 您不必輸入那么多,噪音更小,而且您不必擔心plugin_dir_path
函數內部有什么魔力。 這就是通常在 PHP 中包含文件的方式。 一些牧師可能會說你應該用 Wordpress 的方式來做。 做一個叛逆者!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.