PHPオンライン学習

中級のチュートリアル一覧

初級 中級

カテゴリの選択:

中級 説明
継承とオーバーライド あるクラスを基にクラスを生成することをクラスを継承するといいます。継承元のクラスを基底クラス、継承したクラスのを派生クラスと呼びます。派生クラスを作成するには、派生クラス名の後ろにextendsキーワードを付与し、その後ろに基底クラス名を指定します。また、派生クラス側で基底クラスに存在する変数や関数を定義した場合、基底クラスの変数や関数を上書きすることになり、これをオーバーライドと呼びます。派生クラスから基底クラスのメソッドを呼び出すことは可能ですが、その逆はできません。構文:class 派生クラス名 extends 基底クラス名 { 変数や関数を定義 }
派生クラスから基底クラスのメソッド呼び出し 派生クラス内からは基底クラスのメソッドを呼び出すことが可能です。基底クラスのメソッドを呼び出すにはメソッド名の前にparent::を付与します。逆に基底クラスは派生クラスのことを知らないため基底クラスから派生クラスでオーバーライドされたメソッドを呼び出すことはできません前のステップで定義した派生クラス内に、基底クラスのメソッド呼び出しを追加してみましょう。
インターフェイス インターフェイスはクラスの定数名や関数名と引数の定義のみを行い実装はしない、クラスのプロトタイプ定義です。つまりクラスの雛形(スケルトン)として使用されます。インターフェイスはinterfaceキーワードを使用して定義し、クラスに実装する場合は、クラス名の後にimplementsキーワードを指定し、その後ろにインターフェイス名を記述します。そしてそのクラス内でメソッドの実装を行います。構文:interface インターフェイス名 { 定数や関数名の定義 }
抽象クラスと抽象メソッド 抽象クラスは抽象メソッドを定義したクラスを指します。抽象メソッドはメソッド名と引数のみを定義し実装を行わないメソッド定義です。抽象メソッドを定義するにはfunctionキーワードの前にabstractキーワードを指定します。抽象クラスはインターフェイスと同様にそれ自体をインスタンス化することはできず、クラスに継承し、そのクラスで抽象メソッドをオーバーライドして利用することを前提としています。抽象メソッドを含むクラスは必ず抽象クラスとして定義しなければなりません。インターフェイスと異なる点は、インターフェイスはメソッドの実装は不可であるのに対し、抽象クラスはメソッドの実装も可能な点です。構文:abstract class クラス名 { abstract function 関数名(引数) }
コンストラクタとデストラクタ コンストラクタはクラスがインスタンス化される際に呼び出されるメソッド、デストラクタはクラスのインスタンスが破棄される際に呼び出されるメソッドになります。これらは初期化終了処理を目的としてクラスに実装されている機能です。初期設定では引数無しのデフォルトコンストラクタデフォルトデストラクタが呼ばれます。派生クラスのインスタンス生成時には、基底クラスのコンストラクタは呼ばれません。もし派生クラスの初期化時に基底クラスのコンストラクタを実行させたい場合は明示的に呼ぶ必要があります。コンストラクタはクラス内で__construct()関数で定義します。デストラクタはクラス内で__destruct()関数で定義します。
無名関数(クロージャ) 無名関数はクロージャとも呼ばれ、関数名を定義せずに関数定義を行う事を指します。PHPの内部関数には引数に関数定義を渡せるものがあります。また値の代わりに関数定義を変数に代入することも可能です。変数を無名関数に渡す場合は、useキーワードを使用します。構文:変数名 = function (引数) use (変数) { 実行する処理 };