您应该限制助手函数。在我目前正在编写的一个相当大的插件中(大约50个类),我只有三个助手函数,放在插件主文件中:
/**
* Delete plugin option on deactivation.
*
* @return boolean
*/
function t5_delete_option() {
return delete_site_option( \'plugin_t5\' );
}
/**
* Load a class from /inc/ directory.
*
* @since 2012.10.26
* @param string $class Class name
* @param boolean $create_object Return an object or nothing
* @return bool|$class
*/
function t5_load_class( $class, $create_object = FALSE ) {
$path = plugin_dir_path( __FILE__ ) . "inc/class-$class.php";
if ( ! file_exists( $path ) )
return FALSE;
class_exists( $class ) || require_once $path;
if ( $create_object )
return new $class;
return TRUE;
}
if ( ! function_exists( \'pre_print\' ) ) {
/**
* Print debug output
*
* @since 2012.11.03
* @param mixed
* @return void
*/
function pre_print( $var, $before = \'\' ) {
$export = var_export( $var, TRUE );
$escape = htmlspecialchars( $export, ENT_QUOTES, \'utf-8\', FALSE );
print "$before<pre>$escape</pre>";
}
}
所有其他类都放置在一个目录中
/inc/
(这不是我的选择,我必须在现有规则的范围内工作)。
文件结构应该反映文件的用途,而不是它们的使用位置,因为这可以随时更改。
实施amain controller 类,该类加载当前情况下所需的文件。所以我必须看看one place 只是为了看看发生了什么。
主控制器收集一些数据(插件URL、当前用户的IP地址、自定义数据库类的实例…)并将这些数据作为property list object 到被调用的类。因此,除了类加载器(我不使用自动加载器)和微小的调试功能之外,永远不需要全局访问任何东西。