用語
説明 | |
---|---|
プロパティ | クラス内の変数 |
メソッド | クラス内の関数 |
クラス | メソッド、クラスの集まり(設計書) |
インスタンス | クラスから生成されるもの |
オブジェクト | インスタンスメソッド |
アクセス修飾子
・どこからメソッド、プロパティがどこからアクセス可能かを示す修飾子
・アクセス修飾子を指定しないと、publicの扱いになる
種類 | 説明 |
---|---|
public | どこからでもアクセス可能 |
private | クラス内のみアクセス可能 |
protected | クラス内とそノクタスを継承した子クラスからアクセス可能 |
インスタンス
・クラスをもとにしてものを作ること
・インスタンス化したら基本的に変数に代入する
インスタンス作成
$変数名 = new クラス名(引数)
アロー演算子
・インスタンスのプロパティやメソッドにアクセスするには、-> を使う
クラスの定義
class Car {
public $name;//初期値指定可能
public function drive() {
echo '走ります';
}
}
// Carクラスのインスタンスを作成
$prius = new Car();
//プロパティにアクセス、代入、呼び出し
$prius->name = 'aqua';
echo $prius->name;// aqua
// インスタンスした(drive)メソッドへアクセス
$prius->drive();// 走ります
this
・クラス内のプロパティ、メソッドにアクセスできるインスタンスメソッド
・staticメソッドでは使えない
this
class Car {
private $state = '走ります';
public function drive() {
//プロパティにアクセス
return $this->state;
}
}
$prius = new Car();
echo $prius->drive()// 走ります
static(静的プロパティ)
・クラスのプロパティ、メソッドをstatic
と宣言することで、クラスのインスタンス化無しでアクセス可能
・静的プロパティは->で呼び出せない
self
・自クラスのプロパティ、メソッドへのアクセス
self::
クラス内の自身のインスタンスを生成
new self
静的プロパティ
class Car {
public static $name = 'aqua';
public static function drive() {
echo '運転';
}
public static function enjoy() {
//自クラスのメソッド、プロパティにアクセス
self::drive();
self::$name;
}
}
echo Car::$name;// aqua
Car::drive();// 運転
Car::buy();// aqua運転
対応表
インスタンスプロパティ | インスタンスメソッド | 静的プロパティ | 静的メソッド | |
---|---|---|---|---|
外部から | $a->name | $a->name() | クラス名::$name | クラス名::$name |
インスタンスメソッド内から | $this->name | $this>name() | self::$name | self::$name() |
静的メソッド内から | × | × | self::$name | self::$name() |
コンストラクタ
・オブジェクトを生成するうえで必要なパラメータや、そのクラスのオプションなどを引数として受取り、プロパティにセットするという役割を果たす。
コンストラクタ
class Car {
private $name = '';
//引数をコンストラクタで受け取る
public function __construct($name){
//受け取った値をプロパティとして保存
$this->name = $name;
}
public function getName(){
return $this->name;
}
}
$a = new Car('aqua');
echo $a->getName();// aqua
継承
・同じような処理を二度三度定義し直すのお回避するためにあるコード再利用の仕組み
・親クラスのプロパティ、メソッドが全て引き継ぎ
・引き継いだものはpublic
、protected
なものに限定してアクセス可能
・外部からのアクセスはpublic
のみ
BはAの継承クラスである定義
class B extends A { }
finalキーワード
・fainalキーワードをしたメソッドは継承された派生クラスでオーバーライド(子クラスで親クラスのメソッドを再定義)出来なくする