![](/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.