Php 结构/设计模式解决方案
我试图创建一个WordPress插件,但遇到了一个路障。我正在创建一个需要通过子类扩展的设置页面。主类将看起来像这样Php 结构/设计模式解决方案,php,wordpress,oop,design-patterns,Php,Wordpress,Oop,Design Patterns,我试图创建一个WordPress插件,但遇到了一个路障。我正在创建一个需要通过子类扩展的设置页面。主类将看起来像这样 class SettingsPage { // Properties // Methods public function metaboxes() { add_meta_box( //metabox params ); } } 此类将处理主设置页面。我现在希望能够从几个子类中创建元框。基本上是扩展/附加到metaboxes
class SettingsPage {
// Properties
// Methods
public function metaboxes() {
add_meta_box( //metabox params );
}
}
此类将处理主设置页面。我现在希望能够从几个子类中创建元框。基本上是扩展/附加到metaboxes()
方法
class MetaBoxOne extends SettingsPage {
public function metabox() {
// add another metabox
}
}
这个问题的最佳解决方案是什么?我一直盯着我的代码编辑器看了几个小时,想弄明白它,但运气不好。任何帮助都将不胜感激
继承是最好的途径吗 这种设计可以使用更多。还定义了
IMetaBox
(接口),以确保页面类具有功能,允许您调整其内容和行为。因此,您的设置页面可以如下所示:
class SettingsPage {
// Fields
ICollection<IMetaBox> _metaBoxes;
// Properties
// Methods
public function metaboxes() {
add_meta_box( //metabox params );
}
}
类设置页面{
//田地
i收集代谢箱;
//性质
//方法
公共函数元数据库(){
添加元框(//元框参数);
}
}
你所有的
这需要通过子类进行扩展
将具有管理元数据库所需的
i集合
的内置功能,剩下要做的是调用一个将在集合上迭代的显示方法。更新:
也许这篇文章会对您有所帮助:
首先,如果你想为你的插件创建一个设置页面,我建议你使用内置的设置API。教您了解此API概念所需的一切 其次,我认为您不能在自定义设置页面上使用metaboxes,因为“添加metaboxes”钩子只在编辑文章页面上触发,请参见: 高级操作此部分包含与查询相关的操作 WordPress用于计算要显示的帖子,WordPress 循环、激活插件和其他基本级别的WordPress代码 加载“编辑帖子”页面时,会运行“添加元数据”框。(3.0+) 最后:在另一种情况下,如果您有一个包含子实体的主容器,并且您希望在主容器中收集子实体,我认为您应该遵循核心Wordpress模式,即回调操作挂钩。在主收集器中,必须使用以下内容定义自定义操作挂钩:
do_action('your_plugin_main_collector_do_something', $param1, $param2, $param3, ...);
您的子实体应使用以下内容将自己注册到主容器:
add_action('your_plugin_main_collector_do_something', 'my_entity_callback_function_name', $priority_default_10, $how_many_parameters_you_have_to_use);
你的编程语言是否支持虚拟函数(在基类中)可以被(子类)覆盖?我认为traits是你可能正在寻找的方法。