我想创建一个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. 数据结构之队列、双端队列
  2. java开发有不加班的吗_8年Java开发的500强企业大佬告诉你,程序员不加班就没有前途吗?...
  3. leetcode 211. Add and Search Word - Data structure design Trie树
  4. oracle 11gR2 RAC 安装
  5. WPFToolkit DataGrid 使用介绍zz
  6. 怎么在苹果Mac虚拟机上安装Win7
  7. 如何帮用户管好云账本?阿里云数据库助力收钱吧!
  8. ASP.NET MVC项目的创建
  9. FastDFS 文件上传工具类
  10. 我的计算机专业作文800字,我家的电脑作文800字
  11. linux如何添加默认路由表_linux 添加静态路由
  12. /etc/fstab修改及mkfs(e2label)相关应用与疑问
  13. windows下安装python包管理器pip
  14. 凸优化第八章几何问题 作业题
  15. selnium 判断页面加载完成_selenium webdriver——等待页面元素加载完成
  16. 2018年华为网络技术大赛总结
  17. 飞机航线的获取、配准、制作与统计距离
  18. FreeSwitch uuid_bridge代码分析
  19. Win10完美运行红色警戒2的安装包和补丁_我是亲民_新浪博客
  20. 扫一扫就可一键叫车 杭州暖心车站让老人去往生活里的远处

热门文章

  1. 如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter...
  2. 两种方法将Android NDK samples中hello-neon改成C++
  3. java并发数据共享机制_Java并发编程:核心理论之数据共享性
  4. ajax html页面传参数,jQuery AJAX:如何将大型HTML标记作为参数传递?
  5. cgcs2000大地坐标系地图_为什么要从北京54和西安80统一到CGCS2000?测绘人必知!...
  6. 名为 cursor_jinserted 的游标不存在_生鲜电商存在的问题及对策解析:未来生鲜电商如何发展?...
  7. C++使用JSON的序列化与反序列化
  8. PHP checkdate()函数与示例
  9. 汇编语言-019(汇编程序与c\c++相互调用)
  10. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...