<?php class Product { public $name; public $price; function __construct($name,$price) { $this->name=$name; $this->price=$price; } } class ProcessSale { //保存回调方法的数组 private $callbacks; //注册回掉函数 传入的参数为回调方法名 function registerCallback($callback) { //判断类中是否存在该方法 如果不存在则抛出异常 if(!is_callable($callback)){ throw new Exception('callback not callable'); } //将回调方法名加入数组 $this->callbacks[]=$callback; } //对传入的对象循环执行回调方法 function sale($product) { print"{$product->name}:processing \n"; foreach ($this->callbacks as $callback) { call_user_func($callback,$product); } } } //创建一个匿名函数作为参数传给ProcessSale类的回调注册方法 $test=create_function('$product','print "{$product->price}";'); $pro1=new Product('wz',1000); $sale=new ProcessSale(); $sale->registerCallback($test); $sale->sale($pro1); //输出wz:processing 1000
一个注册回掉函数的代码
最新推荐文章于 2023-06-21 11:05:36 发布