我对抽象类
有疑问我有
abstract class testMaster
{
public function __construct($b, $a)
{
$this->a = $a;
$this->b = $b;
}
public static function create($test)
{
//handle test
switch($test) {
case 'test1':
require_once 'test1.class';
return new test1($a, $v);
break;
case 'test2':
case 'test3':
require_once 'test2.class';
return new test2($a, $v);
break;
}
}
class tester extends testMaster{
codes...
}
我的问题是
如果我想调用静态“create
”方法,请如何调用它。
我使用testMaster::create()
但它似乎没有返回任何内容。有小费吗?非常感谢!
答案 0 :(得分:0)
一些事情(见评论):
abstract class testMaster
{
public function __construct($b, $a)
{
$this->a = $a;
$this->b = $b;
}
public static function create($test)
{
switch($test) {
case 'test1':
require_once 'test1.class';
return new test1($a, $v);
break;
case 'test2':
case 'test3':
require_once 'test2.class';
return new test2($a, $v); // Missing a ')'
break;
}
}
} // Missing '}'
class tester extends testMaster{ // Should be 'extends'
}
答案 1 :(得分:0)
如果您只是致电testMaster::create()
,那么您不会将参数传递给$ test。由于$ test没有切换为空,并且你没有声明default
的情况,它只是运行到Create()的底部,并且什么都不返回。
答案 2 :(得分:0)
是的,一旦您修复了语法错误,就可以调用
$obj = testMaster::create('test1');
顺便说一句,我肯定会建议你使用一些Class Loader机制,避免使用require调用。
此外,如果您对精心设计的测试感兴趣,可以查看PHPUnit。