我正在学习用OOP方式编写Wordpress Multisite,因为我现在对OOP很新,我现在处于一种我似乎无法自己解决的问题.

具体来说,我正在创建一些类来使用OOP方法创建管理页面(在网络和子网站级别).这是我的简化代码:

class AdminPage {

public function __construct( $args ) {

add_action( 'admin_menu', array( $this, 'add_admin_page' ) );

}

public function add_admin_page() {

add_menu_page( // arguments );

}

}

class AdminNetworkPage extends AdminPage {

public function __construct( $args ) {

add_action( 'network_admin_menu', array( $this, 'add_admin_page' ) );

}

}

代码可以工作,但正如您所看到的,我必须扩展AdminPage类,其唯一目的是更改构造函数中的钩子(我需要admin_network_menu用于网络级别的管理页面而不是admin_menu).

有一个更好的方法吗?有一个类的方法,将两个钩子放在该类的构造函数中,然后选择性地调用其中一个?

不幸的是,创建一个新的类实例($page = new AdminPage),然后在其上调用一个方法(例如$page-> add_admin_page())在这种情况下不起作用,因为我得到一个错误说add_menu_page未定义……这一切都必须在构造函数中发生.

PHP调用类函数定义位置,OOP PHP – 如何有选择地调用类的构造函数中定义的特定方法?...相关推荐

  1. C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset

    一.多重继承的对象内存模型 class Base1 { public:virtual void f() {cout << "base1::f()" << e ...

  2. 使用原型相对于直接在构造函数中定义方法的优势? [重复]

    本文翻译自:Advantages of using prototype, vs defining methods straight in the constructor? [duplicate] Th ...

  3. scala 主构造函数_在Scala中,如何在类的主构造函数中定义局部参数?

    在Scala中,如何在不是数据成员的类的主构造函数中定义局部参数,例如,仅用于初始化基类中的数据成员? 例如,在下面的代码中,如何在B类的主构造函数中正确定义参数b,以便它只生成临时本地参数而不是数据 ...

  4. JS面向对象——class定义类、类的构造函数、实例方法、访问器方法、静态方法、继承、super、多态

    一.认识class定义类 我们会发现,按照前面的构造函数形式创建 类,不仅仅和编写普通的函数过于相似,而且代码并不容易理解. 在ES6(ECMAScript2015)新的标准中使用了class关键字来 ...

  5. javascript中实例对象和构造函数关系、原型语法、原型链、call实现继承、apply调用函数、bind拷贝函数、拷贝继承、class类、super、严格模式、高阶函数、闭包、递归、es6简介

    实例对象和构造函数的关系及原型: 实例对象是通过构造函数创建出来的,实例对象的构造器constructor就是指向构造函数的:每个实例对象中的同一方法的指向是各不相同的,但是其属性值相同的属性可以相同 ...

  6. python怎么宏定义符号变量_python中定义宏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 什么是宏? 宏类似python中的函数,可以传参数进去,但不能有返回值! 在实际 ...

  7. python中变量名有哪些_Python变量范围有哪些?如何在Python中定义变量?

    Python变量范围有哪些?如何在Python中定义变量?在Python编程语言中,变量的范围是该变量可见或可访问的那段代码.更准确地说,不是每个程序的每个部分都可以访问所有变量.而且,有时范围也是持 ...

  8. python如何定义类_Python中类的定义、继承及使用对象实例详解

    本文实例讲述了Python中类的定义.继承及使用对象的方法.分享给大家供大家参考.具体分析如下: Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类 ...

  9. C++学习笔记-----在一个构造函数中调用另一个构造函数

    在构造函数中调用另一个构造函数如果一不注意就会有无限递归的危险,而且构造函数的参数的不同也决定了调用的不同,所以特意总结了一下哪些形式的调用时允许的: 首先假设构造函数调用时参数都是外部的变量,而不是 ...

最新文章

  1. 2020年全国大学生智能汽车竞赛山东赛区比赛专家组工作方案
  2. Win7旗舰版安装Oracle_11gR1_database
  3. Vista下将目录的所有者恢复为 TrustedInstaller 的方法
  4. Win11怎么设置电脑开机密码和锁屏密码
  5. python利用pandas存数据并且展示csv
  6. 一起谈.NET技术,疯狂的想法——基于.NET的软件超市平台构想与5年实现之路
  7. ReactNative视频播放器
  8. C#读取Excel文件(*.xls)|*.xls(2种方法)
  9. 平衡二叉树的调整(详解 LL、RR、LR、RL)
  10. Unity3d游戏引擎Windy系列教程:常见组件扫盲讲解引入unity所需的脚本语言基础
  11. 【网络安全】文件包含漏洞总结
  12. 运营管理最新版史蒂文森_《运营管理(英文版第11版注解版国际经典原版教材)》(美)威廉J.史蒂文森著【摘要 书评 在线阅读】-苏宁易购图书...
  13. Java8 使用 stream().sorted()对List集合进行排序
  14. java导出excel文件(标题为中文乱码)
  15. 给你一部电梯,如何对其进行测试?
  16. 主板的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. c语言算法求约数个数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  18. 数字电路-NE555脉冲电路
  19. ubuntu火狐浏览器没有flash插件
  20. kvm怎么修改服务器名字,服务器 配置虚拟kvm功能

热门文章

  1. ios pan手势滑动消失动画_IOS UIPanGestureRecognizer手势使用及识别状态UIGestureRecognizerState...
  2. Ubuntu18.04卸载显卡driver历险记
  3. emacs coding UTF-8 保存报错
  4. UE4之接收鼠标操作
  5. CentOS之安装Netcore运行hellowworld
  6. 计算机基础(九):C语言基础知识小结
  7. Pycharm 转化ui文件为py文件:报错Error in input file: not well-formed (invalid token): line 1, column 1
  8. linux docker状态,Linux之Docker
  9. java二维码生成代码_java快速开发平台功能特点之代码生成器
  10. 4代hiv检测50元_50元的乙肝两对半体检,值得吗?检测前,5种行为不要做