简单的静态方法问题


simple static method issue

我有一个关于抽象类的问题

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。