给类动态的添加方法..

今天没事干翻手册.发现create_function这个方法很有意思.

我们可以定义一些用户函数.但是还是用原来的函数名.只不过前面加个$就可以了.

我们来看下例子

  1. $str_shuffle = create_function('$a','echo $a;');
  2. echo $str_shuffle('aaa');

这样我们就可以制造一个山寨版的str_shuffle了:)

create_function的功能远远不止这点.我们还可以给类动态的添加方法.我们来看下面的例子

  1. class Hoge {
  2.    var $lamda;
  3.    var $text;
  4.    function set($lamda)
  5.    {
  6.        $this->lamda = $lamda;
  7.    }
  8.    function callLamda()
  9.    {
  10.        $func = $this->lamda;
  11.        return $func($this);
  12.    }
  13.    function get()
  14.    {
  15.        return $this->text;
  16.    }
  17. }
  18. $newfunc = create_function('&$class', 'echo $class->get();' );
  19. $h = new Hoge;
  20. $h->text = "Hi there !";
  21. $h->set($newfunc);
  22. $h->callLamda();