0

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

我有

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(),但它似乎没有返回任何东西。有小费吗?非常感谢!

4

3 回答 3

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'


}
于 2013-03-29T19:47:04.660 回答
0

如果您只是调用testMaster::create(),那么您不会将参数传递给 $test。由于 $test 没有 switch case 为空,并且您没有声明defaultcase,它只是运行到 Create() 的底部,并且什么也不返回。

于 2013-03-29T19:51:03.440 回答
0

是的,一旦你修复了语法错误,你可以调用

$obj = testMaster::create('test1');

顺便说一句,我肯定会建议您使用一些类加载器机制并避免使用 require 调用。

Furthermore, if you're interested in well-designed testing, you can have a look at PHPUnit.

于 2013-03-29T19:54:11.477 回答