php 方法参数传递,在PHP中将实例方法作为参数传递
我想创建一个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中将实例方法作为参数传递相关推荐
- java 方法当参数_如何在Java中将函数作为参数传递?
如何在Java中将函数作为参数传递? 这个问题在这里已有答案: Java Pass方法作为参数 14个答案 是否可以将方法作为参 ...
- Delphi 中将对象作为参数传递的使用
Delphi 中将对象作为参数传递的使用 举例分析 2009-07-24 13:40 下面的单击事件,将要调用一个以对象为参数的方法,并将结果显示出来. procedure TForm1.btn1Cl ...
- 【Groovy】Groovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )
文章目录 一.扩展静态方法示例 二.扩展实例方法示例 三.扩展实例方法与扩展静态方法代码相同 一.扩展静态方法示例 在上一篇博客 [Groovy]Groovy 扩展方法 ( Groovy 扩展方法引入 ...
- 【Java代码】使用双冒号 :: 简洁代码及方法引用(静态方法+构造方法+实例方法+函数式编程举例)
1.stream举例 // 1.实例方法 List<String> list = paramIns.stream().map(paramIn::getXxx).collect(Collec ...
- ios oc数组转换为c语言数组,iOS中将数组作为参数传递给服务器
好像并没有发现iOS中直接放数组传的,所以我就把数组转化为相应的字符串来传递 方法一: NSMutableArray *array = [NSMutableArray array]; for (Mod ...
- python传递参数给sql_python-如何在SQLAlchemy Core中将列名作为参数传递?
我有一个sqlalchemy核心批量更新查询,我需要以编程方式传递要更新的列的名称. 该函数如下所示,其中包含每个变量的注释: def update_columns(table_name, pids, ...
- linux shell数组参数传递参数,在bash中将数组作为参数传递
慕哥6287543 您可以使用以下内容将多个数组作为参数传递:takes_ary_as_arg(){ declare -a argAry1=("${!1}") echo " ...
- java 函数 作为参数_如何在Java中将函数作为参数传递?
小编典典 Java 8及以上 如果你的类或接口只有一个抽象方法(有时称为SAM type),则使用Java 8+ lambda表达式,例如: public interface MyInterface ...
- python 加一个月 日期,有没有一种简单的方法可以在Python中将datetime对象增加一个月?...
本问题已经有最佳答案,请猛点这里访问. 所以我试图找到一种方法,将日期时间对象增加一个月.然而,根据这个问题,这似乎不是那么简单. 我希望有这样的事情: import datetime as dt n ...
最新文章
- 数据结构之队列、双端队列
- java开发有不加班的吗_8年Java开发的500强企业大佬告诉你,程序员不加班就没有前途吗?...
- leetcode 211. Add and Search Word - Data structure design Trie树
- oracle 11gR2 RAC 安装
- WPFToolkit DataGrid 使用介绍zz
- 怎么在苹果Mac虚拟机上安装Win7
- 如何帮用户管好云账本?阿里云数据库助力收钱吧!
- ASP.NET MVC项目的创建
- FastDFS 文件上传工具类
- 我的计算机专业作文800字,我家的电脑作文800字
- linux如何添加默认路由表_linux 添加静态路由
- /etc/fstab修改及mkfs(e2label)相关应用与疑问
- windows下安装python包管理器pip
- 凸优化第八章几何问题 作业题
- selnium 判断页面加载完成_selenium webdriver——等待页面元素加载完成
- 2018年华为网络技术大赛总结
- 飞机航线的获取、配准、制作与统计距离
- FreeSwitch uuid_bridge代码分析
- Win10完美运行红色警戒2的安装包和补丁_我是亲民_新浪博客
- 扫一扫就可一键叫车 杭州暖心车站让老人去往生活里的远处
热门文章
- 如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter...
- 两种方法将Android NDK samples中hello-neon改成C++
- java并发数据共享机制_Java并发编程:核心理论之数据共享性
- ajax html页面传参数,jQuery AJAX:如何将大型HTML标记作为参数传递?
- cgcs2000大地坐标系地图_为什么要从北京54和西安80统一到CGCS2000?测绘人必知!...
- 名为 cursor_jinserted 的游标不存在_生鲜电商存在的问题及对策解析:未来生鲜电商如何发展?...
- C++使用JSON的序列化与反序列化
- PHP checkdate()函数与示例
- 汇编语言-019(汇编程序与c\c++相互调用)
- linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...