2010-09-02 4 views
0

Я пытаюсь использовать WebORB для PHP.Не удается вернуть значение из другого экземпляра класса/метода с помощью 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

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

} 

?> 
+0

Я вижу, где я сейчас ошибся! Большое спасибо, что сработало! : D – Reado