无法使用WebORB for PHP从另一个实例化的类/方法返回值

时间:2010-09-02 11:06:57

标签: php instantiation amf weborb

我正在尝试将WebORB用于PHP。

/ weborb /文件夹已复制到我的网站根目录中,我可以通过/weborb/index.php访问控制台。

我已将我的测试应用程序复制到/weborb/_Services/Test/Main.php中。文件内容如下:

<?php
require_once '/home/user/www/MyClass.php';

class Main
{
    public function testMethod($str)
    {
        return $this->MyClass->myMethod($str);
    }
}
?>

“/home/user/www/MyClass.php”的文件内容为:

<?php
class MyClass
{
    public function myMethod($str)
    {
        return $str;
    }
}

$MyClass = new MyClass();
?>

当我尝试通过控制台传递字符串时,只是说“Channel disconnected”。没有任何东西登录到error_log。如果我更换:

return $this->MyClass->myMethod($str);

.. ..用

return $str;

..它有效!我只是希望能够调用其他实例化的类/方法。

1 个答案:

答案 0 :(得分:1)

问题是您未在MyClass班级中声明或实例化Main

试试这个,它应该有效。

<?php

require_once '/home/user/www/MyClass.php';

class Main {

    /**
     * 
     * @var MyClass
     */
    protected $_myClass = null;

    /**
     * Default Constructor
     */
    public function __construct() {
        $this->_myClass = new MyClass();
    }

    /**
     * Test Method
     *
     * @param string $str
     * @return string
     */
    public function testMethod($str) {
        return $this->_myClass->myMethod($str);
    }

}

?>

在你的MyClass.php文件中,你不需要创建变量$ MyClass,它是没用的。它将超出任何其他脚本的范围。只需定义类即它,然后使用此类创建新对象,如上例所示。

<?php

//  MyClass.php
// 
//  ONLY Class Definition!!!
//
class MyClass {

    public function myMethod($str) {
        return $str;
    }

}

?>