0

PHP に WebORB を使用しようとしています。

/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);

..と..

return $str;

..できます!インスタンス化された他のクラス/メソッドを呼び出せるようにしたいだけです。

4

1 に答える 1

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

}

?>
于 2010-09-02T13:57:05.517 に答える