オブジェクト指向について。

前回の続き。
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が使えない。