読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

【PHP】PHPのmethodは大文字・小文字を区別しない

PHP

スポンサードリンク

Mainクラスのmainメソッドを作った時の話

<?php

class Main
{
    public function main()
    {
    }
}

$main = new Main();
$main->main();

このクラスを実行すると、何故かMain->main()の処理が2回実行された。

・・・・?

どうやら、大文字・小文字を認識しないっぽい。さらに、クラスと同じ名前のfunctionはコンストラクタとなる。

そのため、オブジェクト化でコンストラクタが呼ばれる(1回目)、その次にメソッドmainを呼ぶ(2回目)という動きになった。

まじか。。。。

__construct()を記述するか、クラス名と違う名前のメソッドを記述することで回避できる。

<?php

class Main
{
    public function __construct()
    {
    }

    public function main()
    {
    }
}

$main = new Main();
$main->main();

これでおk