调用基类功能

时间:2013-05-09 09:58:09

标签: php class function object call

说我有:

文件BaseFoo.php:

require('MyClass1.php')
class BaseFoo(){

  function check(){
     //do somme stuff
  }

  function f1($o){
     $c = new MyClass1();
     return $c->f1($o);
  } 

}

文件MyClass1.php:

MyClass1(){
   function f1(){
       ???->check() // how to call check() (in initiator BaseFoo class) ?
       // do other stuff
   }
}

现在问题是:在MyClass1中,函数f1,我想调用启动器类中的check()函数。

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

如果你谷歌它,你会找到你的答案,但Check this page

所以你可以使用类似的东西:

class BaseFoo(){

  public static function check(){
     //do somme stuff
  }

  function f1($o){
     $c = new MyClass1();
     return $c->f1($o);
  } 

}

class MyClass1(){
   function f1(){
       BaseFoo::check() // call static function check from BaseFoo
       // do other stuff
   }
}

答案 1 :(得分:0)

您可以进行“static”功能检查,以便拨打BaseFoo::check()

答案 2 :(得分:0)

因为BaseFoo没有扩展MyClass1,所以它不被称为基类。这意味着您确实无法使用parent您需要有一个可以调用该方法的对象。 根据您的需要,您可能需要在BaseFoo(本地或作为成员)中创建类MyClass1的对象(或传递一个),或者您可以使BaseFoo::check()静态:< / p>

class BaseFoo(){

  static function check(){
     // Note: you can only access static members here
     // Calling non-static methods statically generates an E_STRICT level warning. 
  }

  function f1($o){
     $c = new MyClass1();
     return $c->f1($o);
  } 

}
但是,最有可能的是,这不是你真正想做的事情。你应该问一个问题“谁拥有什么?”。在这里,BaseFoo拥有MyClass1对象。所以你可能想要这个:

class BaseFoo(){

  function check(){
     //do somme stuff
  }

  function f1($o){
     $c = new MyClass1();
     check();
     return $c->f1($o);
  } 

}

MyClass1(){
   function f1(){
       // Don't check here, the creator should check
       // do other stuff
   }
}

您可能需要在MyClass1BaseFoo中检查不同的内容,并且您将有2个单独的check方法。