动态创建php 类函数或函数

1. 基础

变量函数:

 
Php代码 网络营销培训  收藏代码
  1. <?php  
  2. $func = 'test';  
  3.   
  4. function test(){  
  5.     echo 'yes !';  
  6. }  
  7.   
  8. $func();  
  9. ?>  

 

随机函数:

 

 

Php代码   收藏代码
  1. <?php  
  2. $newfunc = create_function('$a,$b', 'return $a.$b;');  
  3. echo "New anonymous function: $newfunc<br>";  
  4. echo $newfunc('just', 'coding');  
  5. ?>  
 

 

create_function — Create an anonymous (lambda-style) function

 

创建一个匿名函数。这个函数主要作用在unsort和array_walk的回调函数

$a,$b为参数,'return $a,$b' 为函数的代码

 

 

回调函数 :

 

 

Php代码   收藏代码
  1. <?php     
  2. //5.3 以前     
  3. $array = array( 'asbc', 'ddd', 'tttt', 'qqq');     
  4. array_walk($array,create_function('&$item','$item=strtoupper($item);') ); //function(&$itm){$itm = strtoupper($itm);}     
  5. print_r($array);  
  6.   
  7. //5.3 以后     
  8. $array = array( 'asbc', 'ddd', 'tttt', 'qqq');     
  9. array_walk($array,function(&$itm){$itm = strtoupper($itm);});      
  10. print_r($array);  
  11. ?>  
  array_walk(array,function,userdata...)

  array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。

 典型情况下 function 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。

 2. 实例动态创建类函数

 

Php代码   收藏代码
  1. <?php  
  2. /* create class */  
  3. class Record {  
  4.     
  5.     /* record information will be held in here */  
  6.     private $info;  
  7.     
  8.     /* constructor */  
  9.     function Record($record_array) {  
  10.         $record_array['body'] = 'this is a new attribution';  
  11.         $this->info = $record_array;  
  12.     }  
  13.     
  14.     /* dynamic function server */  
  15.     function __call($method,$arguments) {  
  16.         $meth = $this->from_case(substr($method,3,strlen($method)-3));  
  17.         return array_key_exists($meth,$this->info) ? $this->info[$meth] : false;  
  18.     }  
  19.     
  20.     function from_case($str) {  
  21.         $str[0] = strtolower($str[0]);  
  22.         $func = create_function('$c', 'return "_" . strtolower($c[1]);'); // function ($c) { return "_" . strtolower($c[1]); }  
  23.         return preg_replace_callback('/([A-Z])/', $func, $str);  
  24.     }    
  25. }  
  26.   
  27.   
  28. /* usage */  
  29. $Record = new Record(  
  30.     array(  
  31.         'id' => 12,  
  32.         'title' => 'Greatest Hits',  
  33.         'description' => 'The greatest hits from the best band in the world!'  
  34.     )  
  35. );  
  36.   
  37. /* proof it works! */  
  38. echo 'The ID is:  '.$Record->getId().'<br>'; // returns 12    
  39. echo 'The Title is:  '.$Record->getTitle().'<br>'; // returns "Greatest Hits"  
  40. echo 'The Description is:  '.$Record->getDescription().'<br>'; //returns "The greatest hits from the best band in the world!"  
  41. echo 'The Body is:  '.$Record->getBody(); //returns "The greatest hits from the best band in the world!"  
  42. ?>  

 网络营销培训重点在于: __call 和 create_function(fblww-0221)

转载于:https://my.oschina.net/u/224509/blog/41230

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值