Home  >  Article  >  Backend Development  >  php tricks

php tricks

WBOY
WBOYOriginal
2016-06-20 12:54:201385browse

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

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

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn