KATUBLO
2018年10月20日

【PHP】スコープ定義演算子についてわかりやすく解説

こんにちは。KATUOです。今回は「スコープ定義演算子」について簡単に解説していこうと思います。スコープ定義演算子はプログラムを触ったことある方ならば用語くらいは聞いたことはあると思います。ですが、実際に使い方・意味を知っている人はそんなに多くはない気がします。なので私のような方向けに解説していきます。

 

スコープ定義演算子とは?

スコープ定義演算子 (またの名を Paamayim Nekudotayim)、 平たく言うと「ダブルコロン」は、トークンのひとつです。 static, 定数 およびオーバーライドされたクラスのプロパティやメソッドにアクセスすることができます。

引用:「スコープ定義演算子 (::) 」

https://www.php.net/manual/ja/language.oop5.paamayim-nekudotayim.php

 

まとめると、スコープ定義演算子はトークンであって、スコープ定義演算子を使うとプロパティやクラスにアクセスできるという特性があります。

 

スコープ定義演算子でクラス内のプロパティにアクセス

では実際にスコープ定義演算子を使ってクラス内のプロパティにアクセスしてみましょう。

 

 

引用:「スコープ定義演算子 (::) 」

https://www.php.net/manual/ja/language.oop5.paamayim-nekudotayim.php

 

例をみてわかる通り、普通はクラス内のプロパティを扱う時は、一回インスタンス化をしなければいけませんが

と$classname::をつけることでインスタンス化なしでクラスのメゾット内のプロパティにアクセスできていることが確認できます。スコープ定義演算子を使うことでコードの簡略化ができるというわけですね。

 

スコープ定義演算子 親クラスと子クラス

親クラスと子クラスの使用例

では次に先ほどよりも少し複雑になりますが、親のクラスを継承した子クラスからスコープ定義演算子を用いて親クラスのプロパティにアクセスしてみましょう。

 

 

引用:「スコープ定義演算子 (::) 」

https://www.php.net/manual/ja/language.oop5.paamayim-nekudotayim.php

 

ここで文法について少し解説します。

 

親クラスのプロパティにアクセスする

親クラスのプロパティにアクセスする時は

「parent::」

といったように記述します。

 

自身のプロパティにアクセスする

自身(ここでいう子クラス)のプロパティにアクセスする時は

「self::」

といったように記述します。

 

今回はstaticで定義されたプロパティにアクセスするためにスコープ定義演算子を用いた形となっています。

 

どうでしょうか?スコープ定義演算子の使い方の一部を公式ドキュメントを参考に解説いたしました。PHPを使うときは積極的にこのようなコードを簡潔にする構文を使っていきましょう。

最後まで読んで頂き、ありがとうございました。
SNS等でのシェアが頂ければ幸いです!

プロフィール

@KATUO

現在都内私立大学に通う大学4年生。大学では電気電子工学を専攻。大学2年の夏頃に、プログラマーの長期インターン募集の広告が目に止まり、独学でプログラミングの学習をスタート。この時期からプログラミングにどハマりし、現在までに「AIスタートアップ」「Webマーケティング会社」でエンジニアとしての業務に没頭してきた。

大学生必見就活イベント