1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
/* ----------------------------------------------------------------------------------
 *  クラス・オブジェクト:-- ◆クラスの理解のためのスコープ定義演算子 (::)◆ --の例
 *  2015.10.11 作成 yoshi of CXMedia Inc.
 * ----------------------------------------------------------------------------------
 */
header("Content-type:text/plain; charset=UTF-8");
// ---スーパークラス--- //
class MyClass {
    const 
CONST1 '定数の値:A';
    public static 
$static_value 'English';
}
// ---サブクラス--- //
class OtherClass extends MyClass {

    
// staticとして宣言することで、クラスのインスタンス化の必要なしにアクセス
    
public static $my_static '静的の変数';
    
    
/* ----- スコープ定義演算子 (::) -----------------------
     * クラス定義の内部からプロパティ又はメソッドにアクセスする際に使用
     * 「self 」  自分自身のクラス定義の参照
     * 「parent」 親クラス定義の参照
     * 「static 」静的クラス定義の参照
     * ----------------------------------------------------- */
    
public static function scopeOpe() {
        echo 
parent::CONST1,"\n";
        echo 
self::$my_static,"\n";
        
// スーパークラスのstaticプロパティ$static_valueを参照(staticでないとエラー)
        
echo static::$static_value,"\n";
    }
}

// サブクラスの定数表示
OtherClass::scopeOpe();

/* ------ PHP5.3以降で対応可能 ----------
 *  クラス名を文字列の変数で指定する
 * -------------------------------------- */
$class_name 'MyClass';
echo 
$class_name::CONST1,"\n";
?>