Невозможно вернуть значение из другого экземпляра класса / метода, используя WebORB для PHP - PullRequest
0 голосов
/ 02 сентября 2010

Я пытаюсь использовать 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();
?>

Когда я пытаюсь передать строкучерез консоль просто говорит "Канал отключен".Там тоже ничего не регистрируется в error_log.Если я заменю:

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

.. на ..

return $str;

.. это работает!Я просто хочу иметь возможность вызывать другие экземпляры классов / методов.

1 Ответ

1 голос
/ 02 сентября 2010

Проблема в том, что вы не декларируете и не создаете экземпляр 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;
    }

}

?>
...