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

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に2つの別々のcheck方法があります。

于 2013-05-09T10:10:24.590 に答える
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 に答える
-1

関数チェック ' static' を作成して呼び出すことができますBaseFoo::check()

于 2013-05-09T10:06:24.150 に答える