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
65
66
67
68
69
<?php
/* ----------------------------------------------------------------------------------
* クラス・オブジェクト:-- ◆クラスの理解のためのプログラム構成◆ --の例
* 2015.10.11 作成 yoshi of CXMedia Inc.
* ----------------------------------------------------------------------------------
*/
// ---クラス--- //
class Hello_class{
// -----プロパティ(Property)---------------------------
/* クラス内で定義された変数
* publicは、アクセス修飾子で、どこからでもアクセス可能
* ------------------------------------------------------ */
public $name;
// ----------コンストラクタ(Constructor)------------------------------------
/* インスタンス化したときに自動的に呼び出され、変数を初期化する場合に利用。
* クラスの引数がnull(デフォルト)の時、引数上で、$name="CXMedia"の様に設定
* クラス内でクラス名と同じ名前のメソッドでも良い。
* "this"は、(クラスの)インスタンス化された自分自身を表す。
* ------------------------------------------------------------------------- */
function __construct($name="CXMedia"){
$this->name = $name;
}
// ------メソッド(Method)-------------------
/* アクセス修飾子の省略値は「public」と同様
* ----------------------------------------- */
function DisplayHello(){
echo "こんにちは、".$this->name."さん。<br>";
}
}
// ---継承のクラス--- //
/* --------------------------------------------------------------------------
* Hello_class2の中でHello_classのDisplayHello ( )メソッドが定義されているが、
* 同じ名前のメソッドが定義されていると、オーバーライド(Override)されて
* Hello_class2の方のメソッドが有効になり、それ以外のプロパティ、メソッドは
* 継承されたまま。Hello_class::DisplayHello ( )のように子クラスから直接
* 親クラスのメソッドを呼び出せる。 「::」は、スコープ定義演算子と呼ぶ。
* -------------------------------------------------------------------------- */
class Hello_class2 extends Hello_class {
function DisplayHello( ) {
echo "あなたは誰?";
Hello_class::DisplayHello( );
}
}
// ---インスタンス(オブジェクト)--- //
/* ---------------------------------------------------------------------------
* new キーワードでクラス Hellow_classをインスタンス化して、$obj1と$obj2は、
* 初期データ(引数)でコンストラクタ実行したものがセットされる
* --------------------------------------------------------------------------- */
$obj1 = new Hello_class( "StarLight" );
$obj2 = new Hello_class();
// publicのプロパティは、「インスタンスと"->"オブジェクト演算子付き変数名」を指定で利用
echo $obj1->name,'<br>';
echo $obj2->name,'<br>';
// メソッドは、「インスタンスと"->"オブジェクト演算子付き関数名」を指定して、実行
$obj1->DisplayHello( );
$obj2->DisplayHello( );
// ---インスタンス・オブジェクト--- //
$obj3 = new Hello_class2( "Sunrise" );
$obj3->DisplayHello( );
?>