简单的静态方法问题

时间:2013-03-29 19:44:35

标签: php

我对抽象类

有疑问

我有

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

3 个答案:

答案 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