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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
/* ----------------------------------------------------------------------------------
 *  クラス・オブジェクト:-- ◆クラス・オブジェクトの基本構成◆ --の例
 *  2015.10.11 作成 yoshi of CXMedia Inc.
 * ----------------------------------------------------------------------------------
 */
header("Content-type:text/plain; charset=UTF-8");
/* -------------------
 *   クラスの基本構成
 * ------------------- */
class Test{
    
// -----プロパティ(Property)---------------------------
    /* クラス内で定義された変数
     * publicは、アクセス修飾子で、どこからでもアクセス可能
     * privateは、クラス内のみでアクセス可能
     * ------------------------------------------------------ */
    
public  $testProperty "プロパティ";
    private 
$testConst

    
// ----------コンストラクタ(Constructor)------------------------------------
    /* インスタンス化したときに自動的に呼び出され、変数を初期化する場合に利用。
     * クラスの引数がnull(デフォルト)の時、引数上で、$str='なし'の様に設定
     * "this"は、(クラスの)インスタンス化された自分自身を表す。
     * アクセス修飾子の省略値は「public」と同様
     * ------------------------------------------------------------------------- */
    
function __construct($str='なし'){
       
// 初期設定データから、プロパティをセット
       
$this->testConst $str;
       
$this->testProperty .= $str;
       echo 
"コンストラクタ:",$this->testConst,"\n";
    }
    
// ------メソッド(Method)-------------------
    
public function testMethod(){
       
// コンストラクタで設定したプロパティを"this"演算子を利用して参照
       
echo "メソッド:",$this->testConst,"\n";
    }
    
// ----デストラクタ(destructor)(省略可能)-----
    
function __destruct(){
       echo 
"デストラクタ:",$this->testConst,"\n";
    }
}
/* --------------
 *  クラスの利用
 * -------------- */
// ---インスタンス(オブジェクト)を作成--- //
/* -------------------------------------------------------------------
 * new キーワードでクラス Testをインスタンス化して、$obj1と$obj2は、
 * 初期データ(引数)でコンストラクタ実行したものがセットされる
 * ------------------------------------------------------------------- */
$obj1  = new Test('文字セット');
$obj2  = new Test();

// public(アクセス修飾子)のプロパティは、「インスタンスと"->"オブジェクト演算子付き変数名」を指定で利用
echo '◇プロパティ参照→',$obj1->testProperty,"\n";
echo 
'◇プロパティ参照→',$obj2->testProperty,"\n";

// 各オブジェクトのメソッド実行は、「インスタンスと"->"オブジェクト演算子付き関数名」を指定して、実行
$obj1->testMethod();
$obj2->testMethod();

// オブジェクト(インスタンス)破棄で、デストラクタの処理実行
unset($obj1);
unset(
$obj2);
?>