我正在尝试将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();
?>
当我尝试通过控制台传递字符串时,只是说“Channel disconnected”。没有任何东西登录到error_log。如果我更换:
return $this->MyClass->myMethod($str);
.. ..用
return $str;
..它有效!我只是希望能够调用其他实例化的类/方法。
答案 0 :(得分: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;
}
}
?>