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

发布于 2024-09-17 01:15:20 字数 788 浏览 11 评论 0原文

我正在尝试将 WebORB 用于 PHP。

/weborb/ 文件夹已复制到我的 Web 根目录中,我可以通过 /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();
?>

当我尝试通过控制台传递字符串时,只是说“通道已断开”。 error_log 中也没有记录任何内容。如果我替换:

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

..with..

return $str;

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

I'm trying to use WebORB for PHP.

The /weborb/ folder has been copied into my web root and I can access the console via /weborb/index.php.

I've copied my test application into /weborb/_Services/Test/Main.php. The file contents is as follows:

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

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

The file contents of "/home/user/www/MyClass.php" is:

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

$MyClass = new MyClass();
?>

When I try to pass a string via the console is just says "Channel disconnected". There's nothing being logged into the error_log either. If I replace:

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

..with..

return $str;

..it works! I simply want to be able to call other instantiated classes/methods.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一花一树开 2024-09-24 01:15:21

问题是您没有在 Main 类中声明或实例化 MyClass

试试这个,它应该可以工作。

<?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;
    }

}

?>

Problem is that you are not declaring nor instantiating MyClass in your Main class

Try this, it should work.

<?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);
    }

}

?>

In your MyClass.php file you do not need to create variable $MyClass, it is useless. It will be out of the scope for any other script. Just define the class and that is it, then use this class to create new objects, like in example above.

<?php

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

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

}

?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文