我想创建一个Listener类

class Listener {

var $listeners = array();

public function add(callable $function) {

$this->listeners[] = $function;

}

public function fire() {

foreach($this->listeners as $function) {

call_user_func($function);

}

}

}

class Foo {

public function __construct($listener) {

$listener->add($this->bar);

}

public function bar() {

echo 'bar';

}

}

$listener = new Listener();

$foo = new Foo($listener);

但是此代码失败并出现此错误:

Notice: Undefined property: Foo::$bar in index.php on line 18

Catchable fatal error: Argument 1 passed to Listener::add() must be callable, null given, called in index.php on line 18 and defined index.php on line 5

我究竟做错了什么?

php 方法参数传递,在PHP中将实例方法作为参数传递相关推荐

  1. java 方法当参数_如何在Java中将函数作为参数传递?

    如何在Java中将函数作为参数传递? 这个问题在这里已有答案: Java Pass方法作为参数                                     14个答案 是否可以将方法作为参 ...

  2. Delphi 中将对象作为参数传递的使用

    Delphi 中将对象作为参数传递的使用 举例分析 2009-07-24 13:40 下面的单击事件,将要调用一个以对象为参数的方法,并将结果显示出来. procedure TForm1.btn1Cl ...

  3. 【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )

    文章目录 一.扩展静态方法示例 二.扩展实例方法示例 三.扩展实例方法与扩展静态方法代码相同 一.扩展静态方法示例 在上一篇博客 [Groovy]Groovy 扩展方法 ( Groovy 扩展方法引入 ...

  4. 【Java代码】使用双冒号 :: 简洁代码及方法引用(静态方法+构造方法+实例方法+函数式编程举例)

    1.stream举例 // 1.实例方法 List<String> list = paramIns.stream().map(paramIn::getXxx).collect(Collec ...

  5. ios oc数组转换为c语言数组,iOS中将数组作为参数传递给服务器

    好像并没有发现iOS中直接放数组传的,所以我就把数组转化为相应的字符串来传递 方法一: NSMutableArray *array = [NSMutableArray array]; for (Mod ...

  6. python传递参数给sql_python-如何在SQLAlchemy Core中将列名作为参数传递?

    我有一个sqlalchemy核心批量更新查询,我需要以编程方式传递要更新的列的名称. 该函数如下所示,其中包含每个变量的注释: def update_columns(table_name, pids, ...

  7. linux shell数组参数传递参数,在bash中将数组作为参数传递

    慕哥6287543 您可以使用以下内容将多个数组作为参数传递:takes_ary_as_arg(){ declare -a argAry1=("${!1}") echo " ...

  8. java 函数 作为参数_如何在Java中将函数作为参数传递?

    小编典典 Java 8及以上 如果你的类或接口只有一个抽象方法(有时称为SAM type),则使用Java 8+ lambda表达式,例如: public interface MyInterface ...

  9. python 加一个月 日期,有没有一种简单的方法可以在Python中将datetime对象增加一个月?...

    本问题已经有最佳答案,请猛点这里访问. 所以我试图找到一种方法,将日期时间对象增加一个月.然而,根据这个问题,这似乎不是那么简单. 我希望有这样的事情: import datetime as dt n ...

最新文章

  1. Windows下MetaMap工具安装
  2. ASP.NET Core on K8S深入学习(7)Dashboard知多少
  3. IOS 为UILabel添加长按复制功能
  4. javaScript——原型
  5. 10个前端开发人员必须知道的CSS框架
  6. jquery系列教程3-DOM操作全解
  7. Cisdem DVD Burner for Mac(DVD光盘刻录软件)
  8. python mock接口返回数据(转载)
  9. ES6阮一峰读书笔记第二章变量的解构赋值
  10. 【VMware vSAN 7.0】4.8 有关 vSAN 许可证的注意事项—我们有软硬件解决方案
  11. 【IT项目管理】第3章 整合项目的资源
  12. android srgb模式,一加3固件官方更新:加入屏幕边缘防误触和sRGB显示模式功能
  13. 移动物联网卡APN如何设置?
  14. Composer -- PHP依赖管理的新时代
  15. VS code 代码鼠标滑轮缩放
  16. 【自动驾驶摸爬滚打路】自动驾驶仿真软件SCANeR 001初相识
  17. python 数学公式_python的数学算法函数及公式用法
  18. Java if判断,while判断,Do while判断,Switch判断
  19. ini 文件 使用说明
  20. android系统firefox,Android平台Firefox——Fennec编译手记

热门文章

  1. JavaScript 参考教程——写在前面
  2. winfrom软件开发汽车测试_ETci — 全自动软件测试调度(持续集成)平台
  3. python qt快速入门_PyQt5快速入门(一)
  4. 左斜杠和右斜杠有什么区别_「斜杠云」SEO推广和SEO优化有什么区别?
  5. mssql导出数据到mysql_MSSQL数据导出到MYSQL
  6. 标题 计算机构自由度时主要步骤有哪些,2010年1月全国自考混凝土结构设计试题和答案...
  7. mysql主从架构升级_实战项目——mysql主从架构的实现
  8. python展开 c函数中的宏预处理_C中的预处理宏
  9. 如何检测本计算机耗电量,如何查看电脑耗电量?鲁大师查看电脑使用功率的方法...
  10. VisualStudio2019配置OpenCV