我有一个关于抽象类的问题
我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()
,但它似乎没有返回任何东西。任何建议吗?非常感谢!
一些事情(见注释):
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'
}
如果你只是调用testMaster::create()
,那么你没有传递一个参数给$test。因为没有开关的情况下$test是空的,你还没有声明一个default
的情况下,它只是运行到底部的Create(),并返回什么。
是的,一旦你修正了语法错误,你可以调用
$obj = testMaster::create('test1');
顺便说一下,我强烈建议你使用一些Class Loader机制,避免使用require调用。
此外,如果您对设计良好的测试感兴趣,可以看看PHPUnit。