PHP

PHPのオブジェクト指向をわかりやすく解説します。

PHPには標準ライブラリもしくはユーザ定義ライブラリが数多くあります。しかし、クラスはライブラリのようにあらかじめ第三者が用意してくれているものを利用するだけではありません。

共通のロジックを自分でクラスとして定義することで、より読みやすく、修正も行いやすいコードを記述することができます。

クラスの定義

オブジェクト指向プログラミングというとカプセル化や、ポリモーフィズム、継承などのキーワードを思い浮かべる方がいるでしょう。ですが、当記事では、具体的なクラスの定義を行い、解説していきます。

簡単なクラス

まずは構文的に簡単なクラスを定義してみましょう。

一旦これだけでOKです。なお、クラス名に関しては最初の一文字は慣例的に大文字の方が良いでしょう。パスカル記法と言います。

これが正しいクラスであることを証明するためにnew演算子でFruitクラスをインスタンス化してみましょう。

プロパティ

インスタンス化できたといっても、実質的にクラスの必要がありません。ここからクラスという器の中に様々なメンバ(要素)を追加していきます。

まずは、プロパティです。

プロパティとは、クラスの中で定義された変数のことです。ただ、classブロックの中で定義すればよいという話ではありません。クラスというカテゴリに関連する情報を表すことができる変数でなければなりません。

先程作成したFruitクラスであれば、果物に関する情報でなければならないということです。例えばですが、「name」「color」といったプロパティが必要かもしれません。

では追加してみましょう。

プロパティとして変数と定義する際に気を付けないといけない点は通常の変数の定義と相違がある点です。

アクセス修飾子を頭につける必要があることです。

アクセス修飾子とは・・・

アクセス修飾子とは、その変数に対して「どこから」アクセスできるかを決めるキーワードになります。

クラスの外からアクセスしたい場合は、publicキーワードを指定しなければなりません。

実際にプロパティに値を設定してみましょう。

メソッド

では、メソッドも追加しましょう。

メソッドとは、クラスで管理される値を処理するための関数です。こちらではFruitクラスにname/colorメソッドを追加してみましょう。

プロパティと同じで先頭にアクセス修飾子を指定しなければならない点に注意をしておいてください。

こちらでは、showメソッドの中の$thisというキーワードに注目してください。$thisはインスタンスメソッドの中でのみ使用できる特別な変数で、現在のインスタンスを指します。

$this->name

$thisはメソッドからプロパティを操作する場合に登場する変数ですので、覚えておきましょう

では、showメソッドを呼び出しましょう。

コンストラクタ

クラスを利用する際にnew演算子によって最初に「インスタンス化」のタイミングで実行される特別なメソッドがコンストラクタです。

コンストラクタは__constructに固定されていて、自分で変更されません。

コンストラクタは、インスタンス化のタイミングで実行される性質上、プロパティの初期化やクラスの内部で利用するリソースの初期化を記述するのが一般的です。

具体例を見てみましょう。

引数$name,$colorの値をそれぞれ対応しているプロパティにセットしています。

ただ、コンストラクタはあくまでインスタンスを初期化するためのメソッドです。それ自体がインスタンスを返しません。

こちらのFruitクラスを実際にインスタンス化しているのは下記です。

実はここで指定された引数はコンストラクタに渡されていたのです。

 

これからLaravelを始めるならこれが最適!!


今までLaravelに関しての良書はほとんどなく、あっても内容が古かったり分かりにくいのばかりで、先駆者達は苦労したのではないでしょうか?

そんな中で発売されたこの本は、現在の日本国内にて唯一のLaravelの良書と言い切っても良いかと思います。PHP中級者以上なら苦労することなく読めるでしょう。Laravelは高機能ゆえ、全機能を説明してはいませんが、この本をとっかかりにすれば自ずとLaravelをマスターすることができると思います。