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

Web言語のお勉強~ど素人が往く~

かつてVB6を1年くらい触った事があるだけのど素人がWeb言語に挑戦します。勉強結果を随時発表します。

PHPのお勉強「スコープ定義演算子 (::) 」


クラスにまつわるスコープ定義演算子 (::)

これがまだ慣れない。
PHPで出てくるダブルコロンだ。

これに意味があるのが全然慣れない。
というか普通にソースコード上に出てくる事に違和感を感じてしまう。
まだまだPHP書きにはなれていないという事か。

さてさて今日もお勉強。
PHPマニュアルより引用する。

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

スコープ定義演算子 (::)

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


これらの要素をクラス定義の外から参照する際には、 クラスの名前を使用してください。

static変数に定数、オーバーライドされたプロパティやメソッドにアクセスする時に使うらしい。
全部「.」で良いような気がしてしまう辺りが、まだまだPHP初心者の証拠だろう。
「->」と「::」をガンガン使って覚えるしかないか。

プログラミング

さてさて、実装。
23:01 実装開始。

・・・

23:09 実装完了。

8分で実装できた。
まぁ今日のは、ほぼサンプルのまんまだからな。

動作画面

f:id:MoneyReport:20140312231300p:plain

ソースコード

<?php
class MyClass {
    const CONST_VALUE = '定数値';
}

$classname = 'MyClass';
echo $classname::CONST_VALUE . "<br />";

echo MyClass::CONST_VALUE . "<br />";

class OtherClass extends MyClass
{
    public static $var = 'STATIC変数';

    public static function DoubleColon() {
        echo parent::CONST_VALUE . "<br />";
        echo self::$var . "<br />";
    }
}

$classname = 'OtherClass';
echo $classname::DoubleColon();

OtherClass::DoubleColon();
?>