1. 関数を実行し、すぐに呼び出します
php call_user_func(function(){ echo "hello,world"; });
2. コンテキスト変数
php $context="hello,world"; call_user_func(function()use($context){ echo $context; });
3. use および $this
php class A { public $t; public function __construct($t="hello,world"){ $this->t=$t; } function test(){ call_user_func(function(){ echo $this->t;//php5.4+ }); } } $a=new A(); $a->test();class Hello { private $message = "Hello world\n"; public function createClosure() { return function() { echo $this->message; }; }}class Bye { private $message = "Bye world\n";}$hello = new Hello();$helloPrinter = $hello->createClosure();$helloPrinter(); // outputs "Hello world"$bye = new Bye();$byePrinter = $helloPrinter->bindTo($bye, $bye);//like javascript apply$byePrinter(); // outputs "Bye world"$CI = $this;$callback = function () use (&$CI) {$CI->public_method();};
4. すべてを呼び出します呼び出し可能なもの
php class Contrller{ //调用具体的action, public function __act($action){ call_user_func( array($this,$action) ); //$this->{$action}() }}class HelloContrller extends Controller{ public function index(){ } public function hello(){ } public function dance(){ }}
5. デコレータ
php //装饰器 $dec=function($func) { $wrap=function ()use ($func) { echo "before calling you do sth\r\n"; $func(); echo "after calling you can do sth too\r\n "; }; return $wrap; }; //执行某功能的函数 $hello=function (){ echo "hello\r\n"; }; //装饰 $hello=$dec($hello); //在其他地方调用经过装饰的原函数 $hello(); /*output:before calling you do sthhelloafter calling you can do sth too*/
7. 静的
php$obj = new stdClass;$obj->a = 1;$obj->b = 2;
爆発
php<br />class father{ public function __construct() { // $this->init(); static::init(); } private function init() { echo "father\n"; }}class son extends father{ /*public function __construct() { $this->init(); }*/ public function init() { echo "son\n"; }}$son = new son();son::init();//son
9.オブジェクト配列
php list( , $mid) = explode(';', 'aa;bb;cc'); echo $mid; //输出 bb
10.ツリー
php $array = json_decode(json_encode($deeply_nested_object), true); //$array = (array) $yourObject; function object_to_array($data){ if (is_array($data) || is_object($data)) { $result = array(); foreach ($data as $key => $value) { $result[$key] = object_to_array($value); } return $result; } return $data;}
11. 変数を交換
リスト($a, $b) = array($b, $a);php function displayTree($array){ $newline = "<br>"; $output = ""; foreach($array as $key => $value) { if (is_array($value) || is_object($value)) { $value = "Array()" . $newline . "(<ul>" . $this->displayTree($value) . "</ul>)" . $newline; } $output .= "[$key] => " . $value . $newline; } return $output; }
Zhihu より
http://stackoverflow.com/questions/4345554/convert-php-object-to-assoc...
https://www.quora.com/What-are-some-cool-PHP-tricks