九个月后,同样的船。Wordpress…嗯。。。
在小部件中。php中,有一个名为WP\\u Widget\\u Factory的类(第319行),在它的构造函数中,它将\\u register\\u Widget附加到widgets\\u init hook。这个回调函数非常明智,然后决定遍历已注册的widget数组和任何已注册的widget,它会删除(第341行),以便可以重新注册它们,直接调用构造函数\\uu构造(第345324行)。
此外,这些都无关紧要,因为您的父构造函数无论如何都不会在BAR的构造函数z中被调用。在php中,如果定义了\\uu construct(),则必须显式调用父项::\\uu construct();以运行父构造函数。
但是,如果不定义\\uu construct(),则默认情况下将运行父构造函数。
继承的基本规则。
class WP_Widget_Factory {
var $widgets = array();
function WP_Widget_Factory() {
add_action( \'widgets_init\', array( $this, \'_register_widgets\' ), 100 );
}
function register($widget_class) {
$this->widgets[$widget_class] = new $widget_class();
}
function unregister($widget_class) {
if ( isset($this->widgets[$widget_class]) )
unset($this->widgets[$widget_class]);
}
function _register_widgets() {
global $wp_registered_widgets;
$keys = array_keys($this->widgets);
$registered = array_keys($wp_registered_widgets);
$registered = array_map(\'_get_widget_id_base\', $registered);
foreach ( $keys as $key ) {
// don\'t register new widget if old widget with the same id is already registered
if ( in_array($this->widgets[$key]->id_base, $registered, true) ) {
unset($this->widgets[$key]);
continue;
}
$this->widgets[$key]->_register();
}
}
}