有几件事很突出。
不要预先加载所有的类和文件加载管理类时admin_init
当前端挂钩着火时,挂钩着火,前端类着火。尽可能多地考虑延迟加载。
如果database
是的扩展helper
那么为什么要初始化基类呢应由database
.
为什么要挂钩\'init\'
多次创建\'init\'
功能并添加一个挂钩:
add_action(\'init\', array($this,\'my_init\');
课程应为
CamelCase
不要上课
lowercase
, 曾经
也许比__construct()
?在其他语言中,在实例的初始值设定项中放置操作并不理想。考虑__invoke()
作为替代方案。除非你认为以后会有人使用初始值设定项。。。
self::$instance = new helper(); // __construct
self::$instance(); // __invoke
<小时>
http://wppb.me/ 将管理加载与前端加载分离开来,这是一项有趣的工作。
而@toscho与https://github.com/object-calisthenics/phpcs-calisthenics-rules
注意:这是我所想的大致轮廓,但我还没有测试过。
<?php
if ( ! class_exists( \'HelperClasses\' ) ) {
class HelperClasses {
public static function initialize() {
add_action( \'init\', array ( \'HelperClasses\', \'init\' ) );
}
public static function init() {
require_once( __DIR__ . \'/inc/helper.php\' );
require_once( __DIR__ . \'/inc/database.php\' );
}
}
add_action( \'plugins_loaded\', array ( \'HelperClasses\', \'initialize\' ) );
}
一
<?php
if ( ! class_exists( \'HelperClasses\' ) ) {
class HelperClasses {
public static function initialize() {
add_action( \'init\', array ( \'HelperClasses\', \'init\' ) );
}
public static function init() {
require_once( __DIR__ . \'/inc/helper.php\' );
require_once( __DIR__ . \'/inc/database.php\' );
}
}
add_action( \'plugins_loaded\', array ( \'HelperClasses\', \'initialize\' ) );
}
/inc/database.php
if ( ! class_exists( \'Database\' ) ) {
if ( ! class_exists( \'Helper\' ) ) {
wp_die(\'Helper class required\');
}
/**
* Class Database
*
* Loaded via HelperClasses on `init`
*/
class Database extends Helper {
private static $_instance;
public static function instance() {
if ( ! isset( static::$_instance ) ) {
$singleton = new Database();
static::$_instance = $singleton;
$singleton();
}
return static::$_instance;
}
public function __invoke() {
// TODO: Implement __invoke() method.
}
}
}