マジックメソッドを巡る旅 その11

ヒューマンリソシア 2016/1/2(土) 21:05 tweet16このエントリーをはてなブックマークに追加 印刷用
※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。また、編集部はこの内容について正確性を保証できません。

ヒューマンリソシア株式会社はコラム「マジックメソッドを巡る旅 その11」を公開しました。
旅の最後は、「__get(), __set(), __call(), __callStatic()」で〆とさせていただければ、と思います。

まずは、__callと__callStaticから。
端的には、この2つのマジックメソッドは「存在しないメソッドが呼ばれた時に動きます」。
相変わらず、さくっとサンプルを書いてみましょう。
まずはごく当たり前の「動かない」サンプルを。

class hoge {
}
//
$obj = new hoge();
$obj->foo();

「Fatal error: Call to undefined method hoge::foo() 」って怒られましたそりゃそうですね。
では、ここにマジックメソッドを追加してみましょう。

class hoge {
//
public function __call($func, $args) {
echo “call function name is {$func}\n”;
}
}
//
$obj = new hoge();
$obj->foo();

エラーは出ずに、__callが呼ばれて中の処理が動きました。
同じように、静的なコンテキストも見てみましょう。

class hoge {
}
//
hoge::foo();

ここでのエラーから

class hoge {
//
public static function __callStatic($func, $args) {
echo “call static function name is {$func}\n”;
}
}
//
hoge::foo();

での挙動までが、一式確認できます。
ちなみに、混ぜてもちゃんと、予想通りの動きをしますのでご確認ください。

class hoge {
//
public function __call($func, $args) {
echo “call function name is {$func}\n”;
}
public static function __callStatic($func, $args) {
echo “call static function name is {$func}\n”;
}
}
//
hoge::foo();
//
$obj = new hoge();
$obj->foo();

また「__callだけ宣言しておいて__callStatic宣言しなくても、
都合良く静的なメソッド呼び出しで__callを呼び出してくれる」かというとそんなことありません、
というあたりは、この辺のコードで確認をしてみてください。

この続きは以下をご覧ください
http://resocia.jp/column/2125/

この記事が役に立ったらシェア!
tweet16このエントリーをはてなブックマークに追加
みんなが読んでるWeb担メルマガで、あなたも最新情報をチェック
  • SEOやアクセス解析のなどノウハウをゲット
  • 事例やインタビューも見逃さない
  • 要チェックのセミナー情報も届く
  • 編集長コラムを一足先に読める
日本赤十字社 東日本大震災 義援金募集
みんなが読んでるWeb担メルマガで、あなたも最新情報をチェック
  • SEOやアクセス解析のなどノウハウをゲット
  • 事例やインタビューも見逃さない
  • 要チェックのセミナー情報も届く
  • 編集長コラムを一足先に読める

人気記事トップ10(過去7日間)

今日の用語

グローバルナビゲーション
サイト全体で共通して表示されるナビゲーション。 多くの場合、第1階層(大カ ... →用語集へ

連載/特集コーナーから探す

インフォメーション

Web担のメルマガを購読しませんか?
Web担の記事がコンパクトに毎週届くメールマガジン「Web担ウィークリー」は、10万人が読んでいる人気メルマガ。忙しいあなたの情報収集力をアップさせる強い味方で、お得な情報もいち早く入手できます。

Web担に広告を掲載しませんか?
購読者数10万人のメールマガジン広告をはじめとする広告サービスで、御社の認知向上やセミナー集客を強力にお手伝いいたします。

サイトマップ
RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]

GOLD SPONSOR
さくらインターネット株式会社株式会社KDDI ウェブコミュニケーションズ株式会社日本レジストリサービスオープンテキスト株式会社トランスコスモス株式会社株式会社ハイパーボックスDomain Keeper
SPONSOR
株式会社キノトロープ株式会社アイレップ株式会社ニューズ・ツー・ユーシックス・アパート株式会社ウェブアンテナ株式会社サイバーエージェント富士通株式会社Sitecore