0

我有一个案例在类函数的包含函数中使用 $this 上下文。这个用文字解释起来有点复杂,所以我在这里给出 src 代码。

类文件:agents_class.php

require_once(dirname(__FILE__).DIRECTORY_SEPARATOR."../../common/apstract_service.php");
class class_proforma extends service
{
    function __construct(){
        parent::__construct();
    }
    function getForm($params=false, $do=1){
        if($params){
            include("path/to/custom_func.php");
            return call_user_func_array("custom_func", func_get_args());
        }else{
            return include("another_func.php");
        }
    }
}

custom_func.php 文件:

<?php
    function custom_func($params, $do){ //here i want to use $this; only $this 
         $this->doJop(); //calling class_proforma's/parent class method from here...
         return include("another_func.php"); //here is another file which is using $this;

    }
?>

我想在 custom_func 和 another_func 中使用 $this。我知道将 $this 作为参数传递给 cusomt_func 可以解决这个问题。但问题是“another_func.php”,如果无法更改它的 $this 语法。

有什么办法吗???

4

1 回答 1

0

正如“mpm”和“Vlad Preda”所说,这是不可能的,所以我将用另一个类包装这个函数,从那个类我将所有 $this 调用重定向到实际的 $this 上下文。

<?php
    class custom_cls{
        $service_ctx = null;
        function __construct($that){
            $this->service_ctx = $that;
        }
        function __call($function, $args) {
            return call_user_func_array(array($this->service_ctx, $function), $args);
        }
        function custom_func($params, $do){ 
             $this->doJop(); 
             return include("another_func.php"); 
        }
    }
?>

这是唯一的方法。

感谢所有回复的人。

于 2013-04-11T09:48:30.170 回答