オブジェクト指向について。
前回の続き。
PHP classの教室から。
最初に覚えること。
・クラス
・プロパティ(変数のこと。)
・定数(設定値など格納。変更できないもの。)
・メソッド(関数。クラスの中に入っている関数をメソッドという。)
・インスタンス
・$this
自分自身を指すオブジェクト。
メソッド内で使える。
・オブジェクト
でっかい連想配列みたいなもの。
違いはfuncitonも入れられる。
・プロパティはメソッドを跨って参照・更新できる。
<?php class MyClass { public $some_string = 'こんにちは'; public function sayHello() { echo $this->some_string; } public function change() { $this->some_string = 'こんばんわ'; } } $obj = MyClass(); $obj->sayHello(); //こんにちは $obj->change(); //こんばんわを代入 $obj->sayHello(); //こんばんわ
・__construct
newしてインスタンス化時に必ず実行される。
引数使える。
使われていた例をそのまま引用させていただきます。
<?php class Kid { const SEX_MALE = '1'; const SEX_FEMALE = '2'; const AGE_YOUNG = '12'; public $name; public $sex; public $age; public function __construct($name, $sex, $age=0){ $this->name = $name; $this->sex = $sex; $this->age = $age; } public function getLabel(){ if ($this->sex == self::SEX_MALE) { $suffix = 'くん'; } else { $suffix = 'ちゃん'; } if ($this->age >= self::AGE_YOUNG) { $suffix = $this->getYoungLabel(); } return $this->name . $suffix; } public function getYoungLabel() { if ($this->sex == self::SEX_MALE) { $suffix = '君'; } else { $suffix = 'さん'; } return $suffix; } } $obj = new Kid(); echo $obj->getLabel();
・アクセス修飾子
メソッドやプロパティへのクラス外からのアクセスを制限できる。
public/private/protected
・private
同一クラス内からしか触れない。
・protected
子クラスからなら触れる。
・オートロード
クラスを定義したファイルを自動で読みこんでくれる。
クラス名とファイル名は対応させる。
1クラス1ファイル。
・namespace
・static
staticをつけたメソッドはインスタンスを作成せずに実行できる。
ただし$thisが使えない。