使用自动加载器,让PHP为您解决这个问题。然后只加载一个类,您不必担心重复声明。
示例
我有一个(未完成的)插件
Post Notes 具有以下文件结构:
- plugin.php
- php/
- Nonce_Validator.php
- Save_Post_Request_Validator.php
- Textarea.php
- … and more
这是一个非常简单的插件,因此所有文件都使用相同的名称空间
Wpkrauts
. 在里面
plugin.php
, 我注册了一个简单的自动加载例程:
spl_autoload_register( function( $name ) {
$name = ltrim( $name, \'\\\\\' );
if ( \'Wpkrauts\' !== strtok( $name, \'\\\\\' ) )
return;
$file = strtok( \'.\' );
$path = __DIR__ . "/php/$file.php";
if ( file_exists( $path ) )
require $path;
});
// Now start.
is_admin() && new Post_Notes( \'wpkrauts_post_notes\' );
您可以在不使用名称空间的情况下执行相同的操作(不推荐,当您必须支持不安全的PHP版本(如5.2)时除外)。
在PHP 5.2中,可以关闭SPL库,但这在我所知道的插件中从来都不是问题。我们公司发布了像backwup这样的插件,下载量超过了100万次,而且从来没有一个插件符合这一点。