当前位置:Gxlcms > PHP教程 > phptricks

phptricks

时间:2021-07-01 10:21:17 帮助过:24人阅读

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*/ 

6.object

php$obj = new stdClass;$obj->a = 1;$obj->b = 2;

7.static

php
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

8.list explode

php    list( , $mid) = explode(';', 'aa;bb;cc');    echo $mid; //
输出 bb

9.object array

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;}

10.tree

php    function displayTree($array){      $newline = "
"; $output = ""; foreach($array as $key => $value) { if (is_array($value) || is_object($value)) { $value = "Array()" . $newline . "(
    " . $this->displayTree($value) . "
)" . $newline; } $output .= "[$key] => " . $value . $newline; } return $output; }

11.交换变量
list($a, $b) = array($b, $a);

来自
知乎
http://stackoverflow.com/questions/8391099/using-this-in-anonymous-fun...
http://stackoverflow.com/questions/4345554/convert-php-object-to-assoc...
https://www.quora.com/What-are-some-cool-PHP-tricks

人气教程排行