1. 基础
变量函数:
- <?php
- $func = 'test';
- function test(){
- echo 'yes !';
- }
- $func();
- ?>
随机函数:
- <?php
- $newfunc = create_function('$a,$b', 'return $a.$b;');
- echo "New anonymous function: $newfunc<br>";
- echo $newfunc('just', 'coding');
- ?>
create_function — Create an anonymous (lambda-style) function
创建一个匿名函数。这个函数主要作用在unsort和array_walk的回调函数
$a,$b为参数,'return $a,$b' 为函数的代码
回调函数 :
- <?php
- //5.3 以前
- $array = array( 'asbc', 'ddd', 'tttt', 'qqq');
- array_walk($array,create_function('&$item','$item=strtoupper($item);') ); //function(&$itm){$itm = strtoupper($itm);}
- print_r($array);
- //5.3 以后
- $array = array( 'asbc', 'ddd', 'tttt', 'qqq');
- array_walk($array,function(&$itm){$itm = strtoupper($itm);});
- print_r($array);
- ?>
array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。
典型情况下 function 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数 userdata ,将被作为第三个参数传递给回调函数。
2. 实例动态创建类函数
- <?php
- /* create class */
- class Record {
- /* record information will be held in here */
- private $info;
- /* constructor */
- function Record($record_array) {
- $record_array['body'] = 'this is a new attribution';
- $this->info = $record_array;
- }
- /* dynamic function server */
- function __call($method,$arguments) {
- $meth = $this->from_case(substr($method,3,strlen($method)-3));
- return array_key_exists($meth,$this->info) ? $this->info[$meth] : false;
- }
- function from_case($str) {
- $str[0] = strtolower($str[0]);
- $func = create_function('$c', 'return "_" . strtolower($c[1]);'); // function ($c) { return "_" . strtolower($c[1]); }
- return preg_replace_callback('/([A-Z])/', $func, $str);
- }
- }
- /* usage */
- $Record = new Record(
- array(
- 'id' => 12,
- 'title' => 'Greatest Hits',
- 'description' => 'The greatest hits from the best band in the world!'
- )
- );
- /* proof it works! */
- echo 'The ID is: '.$Record->getId().'<br>'; // returns 12
- echo 'The Title is: '.$Record->getTitle().'<br>'; // returns "Greatest Hits"
- echo 'The Description is: '.$Record->getDescription().'<br>'; //returns "The greatest hits from the best band in the world!"
- echo 'The Body is: '.$Record->getBody(); //returns "The greatest hits from the best band in the world!"
- ?>
网络营销培训重点在于: __call 和 create_function(fblww-0221)