PHP:parent::somefunction或$this->;某些函数
事实上,这个问题是在我看wordpress codex关于Widget的时候提出来的,但我认为它更像是一个PHP问题。这里有三个问题:PHP:parent::somefunction或$this->;某些函数,php,wordpress,Php,Wordpress,事实上,这个问题是在我看wordpress codex关于Widget的时候提出来的,但我认为它更像是一个PHP问题。这里有三个问题: 为什么codex和书使用了两种看似不同的方法来构建小部件。codex使用parent::WP_Widget(静态方法?)和book使用$this->WP_Widget(实例方法?)会有什么区别吗 我还注意到我使用了PHP4构造函数WP\u小部件,而不是\uu构造函数。这仅仅是出于兼容性的原因吗?我也可以使用$this->\u构造对吗 我试过 // in pp_w
parent::WP_Widget
(静态方法?)和book使用$this->WP_Widget
(实例方法?)会有什么区别吗WP\u小部件
,而不是\uu构造函数
。这仅仅是出于兼容性的原因吗?我也可以使用$this->\u构造对吗
// in pp_widget class extends WP_Widget
function __construct() {
$this->WP_Widget(...); // or $this->__construct(...)
}
class FooWidget extends WP_Widget {
/** constructor */
function FooWidget() {
parent::WP_Widget(false, $name = 'FooWidget');
}
从专业的wordpress这本书中
class pp_widget extends WP_Widget {
function pp_widget() {
$this->wp_widget(...);
}
构造函数的底层wordpress代码
function WP_Widget( $id_base = false, $name, $widget_options = array(), $control_options = array() ) {
$this->__construct( $id_base, $name, $widget_options, $control_options );
}
...
function __construct( $id_base = false, $name, $widget_options = array(), $control_options = array() ) {
$this->id_base = empty($id_base) ? preg_replace( '/(wp_)?widget_/', '', strtolower(get_class($this)) ) : strtolower($id_base);
$this->name = $name;
$this->option_name = 'widget_' . $this->id_base;
$this->widget_options = wp_parse_args( $widget_options, array('classname' => $this->option_name) );
$this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) );
}
我还注意到我使用了PHP4构造函数WP\u小部件
,而不是\uu构造函数
。这仅仅是出于兼容性的原因吗?我也可以用$this->\u构造,对吗
你可以。我倾向于使用\u构造函数
,因为A)它没有歧义,B)如果重构类名,我不必更改名称
i tried ...
// in pp_widget class extends WP_Widget
function __construct() {
$this->WP_Widget(...); // or $this->__construct(...)
}
在PHP中,保留函数名\uu construct
是与类同名的方法的别名。它通常由$my_object=new MyClass()调用代码>。毫无疑问,这是一个无限递归循环,因为对象继承了这些方法
我还注意到我使用了PHP4构造函数WP\u小部件
,而不是\uu构造函数
。这仅仅是出于兼容性的原因吗?我也可以用$this->\u构造,对吗
你可以。我倾向于使用\u构造函数
,因为A)它没有歧义,B)如果重构类名,我不必更改名称
i tried ...
// in pp_widget class extends WP_Widget
function __construct() {
$this->WP_Widget(...); // or $this->__construct(...)
}
在PHP中,保留函数名\uu construct
是与类同名的方法的别名。它通常由$my_object=new MyClass()调用代码>。毫不奇怪,这是一个无限递归循环,因为对象继承了这些方法。Wordpress以其不一致的编码风格和可怕的代码库而闻名。我不会试图去理解为什么这里的代码是这样的。Wordpress以其不一致的编码风格和糟糕的代码库而闻名。我不想试着去理解为什么代码是这样的。嗯,但是我仍然不明白为什么如果我用pp\u widget
而不是\uu construct
它会工作,因为\uu construct()=pp\u widget()
hmm,但是我仍然不明白为什么我用pp\u widget
而不是\uu-construct
它会工作,因为\uu-construct()=pp\u-widget()