php5魔术函数uu toString($param=null)不能接受参数

php5魔术函数uu toString($param=null)不能接受参数,php,debugging,Php,Debugging,我曾经有一个这样定义的函数(在ubuntu 9.10下运行良好): 在我将我的机器更新到ubuntu 10.04(和php版本:5.3.2-1ubuntu4.2)之后 )我的应用程序开始显示这样的错误==> 致命错误:方法应用程序\u Model\u Person::\u tostring()无法在第39行的/home/speshu/Development/where/Application/models/Person.php中获取参数 这就是我如何避开这个问题的,它又脏又丑。。。但在找到一个更

我曾经有一个这样定义的函数(在ubuntu 9.10下运行良好):

在我将我的机器更新到ubuntu 10.04(和php版本:5.3.2-1ubuntu4.2)之后 )我的应用程序开始显示这样的错误==>

致命错误:方法应用程序\u Model\u Person::\u tostring()无法在第39行的/home/speshu/Development/where/Application/models/Person.php中获取参数

这就是我如何避开这个问题的,它又脏又丑。。。但在找到一个更持久的解决方案之前,它成功地让系统重新运转起来

您应该能够找出如何最好地扩展它以满足您的需要,请注意,如果使用此方法,可能最好传入一个关联数组,因为这样更容易访问数据

这就是我如何避开这个问题的,它又脏又丑。。。但在找到一个更持久的解决方案之前,它成功地让系统重新运转起来

您应该能够找出如何最好地扩展此方法以满足您的需要,请注意,如果使用此方法,可能最好传入一个关联数组,因为从5.3版开始,访问数据会更容易。

无论如何,你真的应该用一种神奇的方法来做吗?为什么不声明toString($whatever)呢?

从5.3版开始


无论如何,你真的应该用一种神奇的方法来做吗?为什么不声明toString($whatever)呢?

另一种可能的解决方法

class test
{
    var $toStringArgs = array();

    function SetToStringArgs()
    {
       $this->toStringArgs = func_get_args();
    }

    function __toString()
    {
         var_dump($this->toStringArgs);
    }
}

$test = new test();

$test->SetToStringArgs('firstname','lastname');

$test->__toString();

另一个可能的解决办法

class test
{
    var $toStringArgs = array();

    function SetToStringArgs()
    {
       $this->toStringArgs = func_get_args();
    }

    function __toString()
    {
         var_dump($this->toStringArgs);
    }
}

$test = new test();

$test->SetToStringArgs('firstname','lastname');

$test->__toString();

我认为调用$obj->uu toString()是非常丑陋的;
最好只调用echo$obj;如果不想传递参数并调用$obj->toString($param);如果要指定参数

我认为调用$obj->\uuu toString()是非常丑陋的;
最好只调用echo$obj;如果不想传递参数并调用$obj->toString($param);如果要指定参数

事实上,如果需要为字符串表示形式传递可能性参数,请定义
函数toString($arg='')
,并让
函数uu toString(){return$this->toString();}
,以避免重复。确实,如果需要为字符串表示形式传递可能性参数,请定义
函数toString($arg='')
,并让
函数uu-toString(){返回$this->toString()}
以避免重复。
function __toString() {
    if(func_num_args()>0) {
        $surNameFirst=func_get_arg(0);
    } else {
        $surNameFirst=false;
    }
....
class test
{
    var $toStringArgs = array();

    function SetToStringArgs()
    {
       $this->toStringArgs = func_get_args();
    }

    function __toString()
    {
         var_dump($this->toStringArgs);
    }
}

$test = new test();

$test->SetToStringArgs('firstname','lastname');

$test->__toString();