skillup

技術ブログ

PHP プログラミング全般

クラスメソッドとインスタンスメソッド

投稿日:

以前staticメソッドを定義したときに、記法がインスタンスメソッドの呼び方でも呼べてしまうことがあったので、これを機にインスタンス・クラス×変数・メソッドちょっと調べてみました。

言葉で書くよりコードを見たほうがわかりやすいかも。

ソース

メモ

  • クラスメソッドとインスタンスメソッドの違いはメモリの確保のされ方
  • クラスメソッドは当然インスタンスから独立しているので、どのインスタンスからよんでも同一のデータにアクセスする
  • インスタンスはインスタンスごとにメモリ上に置かれるため、クラスメソッド(static)からは基本的にアクセスできない
  • インスタンスの中にはクラスメソッドが入っているのでインスタンスからクラスメソッドを呼ぶことは当然できる
  • 上記の場合(インスタンスからクラスメソッドを呼ぶ場合)、記法は正確にはインスタンス::クラスメソッドだがインスタンス->クラスメソッドという呼び方でもOK

参考リンク

PHPの静的変数 (static変数) の挙動まとめ

-PHP, プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Laravelのサービスプロバイダ

ミドルウェアやルーティング同様、惰性で使っていたサービスプロバイダについてめも。 Contents1 サービスプロバイダとは2 参考リンク・参考文献 サービスプロバイダとは Laravelでは特定のサ …

no image

phpのライブラリ(mcrypt)インストール

先日、ローカルで開発していたPHPをサーバーにアップして、composerでライブラリをアップデートしようとしたところ、”The mcrypt extension is missing. …

no image

コードの分割

今回はリーダブルコードの8章。コードの分割について。 ポイントとしては1行に情報を詰め込みすぎているような場合は分割して、意味がわかりやすい区切りにまとめよう、といったことでしょうか。つまりは「困難は …

no image

PHPの無名関数+array系の関数

PHPの無名関数について。 PHP5.3.0以降で実装され、概念としては知っていましたが、あまり使ったことがありませんでした。 今開発しているPHPの案件で無名関数のソースをみたので、復習もかねてメモ …

no image

apacheで複数インスタンスの起動

前回のphpenvがらみの引き続きですが、php5.6と7を共存させ、なおかつWEBアプリで動かす方法を調べたところapacheの複数インスタンスがであれば可能だとのこと。 早速調べなんとかできました …