0

说我有:

文件 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() 函数。

感谢您的帮助!

4

3 回答 3

0

如果你谷歌它,你会找到你的答案,但检查这个页面

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

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
   }
}
于 2013-05-09T10:01:51.337 回答
0

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

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
   }
}

MyClass1您可能需要在里面和里面检查不同的东西BaseFoo,并且您将有两种不同check的方法。

于 2013-05-09T10:10:24.590 回答
-1

你可以做功能检查' static'所以你可以打电话BaseFoo::check()

于 2013-05-09T10:06:24.150 回答