2010-09-02 37 views
0

J'essaie d'utiliser WebORB pour PHP.Impossible de renvoyer la valeur d'une autre classe/méthode instanciée à l'aide de WebORB pour PHP

Le dossier/weborb/a été copié dans ma racine Web et je peux accéder à la console via /weborb/index.php.

J'ai copié mon application de test dans /weborb/_Services/Test/Main.php. Le contenu du fichier est la suivante:

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

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

Le contenu du fichier de « /home/user/www/MyClass.php » est:

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

$MyClass = new MyClass(); 
?> 

Lorsque je tente de transmettre une chaîne via la console est dit simplement "Canal déconnecté". Il n'y a rien non plus dans le journal des erreurs. Si je remplace:

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

..avec ..

return $str; 

..il fonctionne! Je veux simplement pouvoir appeler d'autres classes/méthodes instanciées.

Répondre

1

Le problème est que vous n'êtes pas ni déclarez instanciation MyClass dans votre Main classe

Essayez ceci, cela devrait fonctionner.

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

} 

?> 

Dans votre fichier MyClass.php, vous n'avez pas besoin de créer une variable $ MyClass, cela ne sert à rien. Ce sera hors de la portée de tout autre script. Définissez simplement la classe et c'est tout, puis utilisez cette classe pour créer de nouveaux objets, comme dans l'exemple ci-dessus.

<?php 

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

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

} 

?> 
+0

Je vois où je me suis trompé maintenant !! Merci beaucoup, ça a marché! :RÉ – Reado