解决方案 »

  1.   

    1、$this->afterEditFun   这个成员变量 在用之前赋值了类中的某个函数的名字;它是在2.php中用
          $Editor->setConfig('afterEditFun',array(&$this,'sendNotice'));时行赋值的;是当前对象的sendNotice方法,这样
          call_user_func()就是调用了sendNotice方法。
    2、setConfig()方法就是根据session的状态动态添加成员变量
      

  2.   

    call_user_func 函数原型
    mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
    参数由 $callback 回调函数和参数列表做成
    比如
    function f($a, $b, $c) {
    }
    call_user_func('a', 1, 2, 3);
    就相当于执行
    f(1, 2, 3);
    由于回调函数是以变量形式出现的
    所以 call_user_func 可以动态执行各种函数(只要参数正确)而无需改变程序本身回调函数可以有以下形式
    1、已定义函数:函数名
    2、对象的方法:array(对象名, 方法名),array(类名, 方法名)
    3、动态创建的函数:create_function(...)
    4、闭包:function(...)在实际开发中,call_user_func 这个函数没有 call_user_func_array 使用频度高
    因为开列参数灵活性较差
      

  3.   


    您好,我想问问
    1.为什么要通过判断session 的状态来给afterEditFun 赋值呢?
      session里面有个作用,就是可以跨页面传递参数。。但是这里我还是不大明白。afterEditFun这个函数功能是编辑该页面内容,后显示编辑后的有关Notice2. 在2.php中想调用1.php的方法,可以通过new A() 将1.php对象实例化来调用。。如果2.php也是一个对象比如class B,那么1.php要想调用2.php的方法,是不是不可以new B(), 这个问题比较白痴,感觉就是不可以。那么除了通过回调函数1.php还有其他办法调用2.php的函数吗?2. $this->afterEditFun  这个成员变量用setConfig赋值时,比如$this->{$var} = $value;  这个语法不是太懂。首先$this->{$var} 有“{}”是什么意思。。还有value是一个数组array (&$this,'sendNotic'),是怎么赋值的呢?
    谢谢呢
      

  4.   


    谢谢你的回答,这部分明白了些。另外:
    1.在$afterEditFun回调之前赋值了某个函数的名字,使用了setconfig。这里面对session进行判断,不是太明白。能解答下吗?2. 赋值的语法。比如$this->{$var} = $value;  不是太懂。首先$this->{$var} 有“{}”是什么意思。。还有value是一个数组array (&$this,'sendNotic'),是怎么赋值的呢?
    谢谢
      

  5.   

    先声明一下,你的代码片段是 php4 的,很多写法已经过时了
    你也不能指望十年前的人能写出符合现代潮流的代码,如果作者重写他的这个项目的话,水平将大大提高$this->{$var} = $value;
    就是
    $this->$var = $value;
    是变量的变量,这一点你应该是很清楚的
    $a = 1;
    $b = 'a';
    echo $$b; // 输出 1
    $a = array(1,2);
    print_r($a); // 输出 Array ([0] =>1 [1] => 2)至于为什么要判断 session,那就与业务逻辑用关系了。仅从代码上是看不出来的