18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPのメソッドと関数の違い

Posted at

メソッドは実装する場所が異なるだけで、関数の一種、という少し乱暴な考えでいるのですが、PHPではどのように扱われるのか、少し調べてみました。
仮説:

  • メソッド:クラスの中で定義された関数
  • 関数:クラスの外で定義された関数

今回は、PHPの定義済みの定数の動きを確認してみます。
http://php.net/manual/ja/language.constants.predefined.php

__METHOD__ クラスのメソッド名。
__FUNCTION__ 関数名。

他に、メソッドと関数を、と言うモノを明確に区別する様なモノがPHPには見当たらなかったので…他に良い指標があれば教えて下さい!

では、実際どう出力されるのか?まずは結論から。

__FUNCTION__
 常に関数名を返す。
__METHOD__
 **クラスのメソッド内で利用すると、「クラス::関数名」**を返す。
 関数内で利用した時は、__FUNCTION__と同じく、関数名を返す。

__FUNCTION__をメソッド内で、__METHOD__を関数内で、あべこべに呼び出したらエラーになったりしないか気になっていたのですが、無難な結果になりました。

以下、テストコードとその出力。

test1.php
class test{
  public function mic(){
    echo __FUNCTION__ . "\n";
    echo __METHOD__. "\n";
  }
}
$pic = new test();
$pic->mic(); 

出力
mic
test::mic

test2.php
function moc(){
  echo __FUNCTION__ . "\n";
  echo __METHOD__. "\n";
}
moc();

出力
moc
moc

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?