こんにちは
フリーランスになってから、収入は中々増えないのに体重は順調に増えているだーだいです。
では本題へ
「phpのクラスとインスタンスの関係性が難しくてよく分からない」
phpの学習を始めたばかりの方で上記の悩みを抱えている方も多いのではないでしょうか。クラスとインスタンスの意味や役割を理解することで、上記の悩みを解決できます。
今回はphpのクラスとインスタンスの特徴から関係性まで解説します。
目次
【php】クラスとインスタンスの意味と役割
クラスとインスタンスの関係性を理解するためにも、双方の特徴と役割を理解しておきましょう。
クラスの意味と役割
クラスとは、変数や関数などのプログラムをまとめたもので、設計図のような役割があります。
クラス内で定義する変数はプロパティ、関数はメソッドと呼ばれます。また、クラス内に記述したプログラムを実行するにはインスタンスに変換する必要があります。
クラスは、phpだけでなく色々なプログラミング言語で使用されているので、どのような役割があるのか理解しておきましょう。
インスタンスの意味と役割
インスタンスとはクラスという設計図を元に作られた、実際に使用できるプログラムのことです。
クラスからインスタンスを作ることをインスタンス化といいます。また、1つのクラスからインスタンスを複数作ることも可能です。
クラスとインスタンスを車に例えると、クラスが車の設計図でインスタンスが車自体を表します。車の設計図通りに車を何台も作れるように、クラスも複数回インスタンス化できるのです。
【php】クラス内で使用するコンストラクタの意味と使用方法
phpでクラスを使用する際に必須となるコンストラクタの働きや、コードを用いた使用例について解説します。
コンストラクタとは
クラスがインスタンス化されたときに実行されるメソッドのことをコンストラクタといいます。
クラスをインスタンス化するときに引数を入力できるのですが、その引数の値をコンストラクタで受け取り、クラス内のプロパティへ設定できます。
コンストラクタの書き方は決まっているので、下記のコードをコピペして利用するとよいでしょう。
1 |
public function __construct(){} |
コンストラクタの使用例
1 2 3 4 5 6 7 |
class Test{ public $name; public function __construct($classname){ $this->name = $classname; } } |
インスタンス化されたときに入力された引数が、コンストラクタの引数に指定され、$this->nameに代入されます。
【参考コード付き】phpのクラスとインスタンスの使用例
クラスを作成してインスタンス化するまでの流れを参考コードを用いて解説します。
【コピペOK】クラスの使用例
1 2 3 4 5 6 7 8 9 10 11 |
class Test{ public $name; public function __construct($classname){ $this->name = $classname; } public function hello(){ return "hello, " . $this->name; } } |
クラスを定義するときは、最初の文字を大文字にする必要があります。publicで定義しているのは変数で、class内だけで使用できます。
1 2 |
class Test{ public $name; |
hello()というメソッドは、クラスがインスタンス化された後実行できるようになります。
実行されると「hello, ○○」と表示され、○○の部分は$this->nameでクラス内のプロパティに入っている値が指定されます。
1 2 3 |
public function hello(){ return "hello, " . $this->name; } |
【コピペOK】クラスをインスタンス化してプログラムを実行する使用例
全項目で作成したクラスをインスタンス化して利用する方法を参考コードを用いて解説します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Test{ public $name; public function __construct($classname){ $this->name = $classname; } public function hello(){ return "hello, " . $this->name; } } $nakamura = new Test("nakamura"); echo $nakamura->hello(); |
インスタンス化するときはクラス名の前に「new」を指定して変数に代入します。その際に渡したい値を引数に入れることで、コンストラクタが動いてクラス内のプロパティへ代入されます。
1 |
$nakamura = new Test("nakamura"); |
プログラムを実行するときは、インスタンス化した変数にアロー演算子を使用してクラス内のメソッドを指定しましょう。下記コードを実行することで、クラス内のhello()メソッドが実行されます。
1 |
echo $nakamura->hello(); |
【php】オブジェクト指向の意味と役割
オブジェクト指向の理解は、クラスとインスタンスを使用してプログラミングする際に大切になるので、本記事をきっかけに覚えておくとよいでしょう。
オブジェクト指向とは
オブジェクト指向とは、プログラミングを「もの」として捉える概念のことを指します。
例えば、車は色々な種類がありますが、ホイールが4つあり、前にハンドルがついていてボンネットにエンジンが内臓されているといった、どの車にも共通する部分があります。これは軽自動車から大型車まで変わりません。
車でいうホイールやエンジンのように、プログラミングでも共通化できるものを作って、そこから必要な要素を追加することで体系的なプログラミングをすることがオブジェクト指向の考え方になります。
オブジェクト指向の使用例
これまで説明したクラスとインスタンスを活用し、車を例にしてオブジェクト指向の解説をします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Car{ public $carname; public function __construct($name){ $this->carname = $name; } public function engine(){ return $this->carname . "のエンジンを起動しました"; } } $tanto = new Car("タント"); $benz = new Car("ベンツ"); echo $tanto->engine() . "\n"; echo "この車は" . $benz->carname . "です。"; |
上記コードのように、1つのクラスから複数インスタンス化して使用できます。このようにオブジェクト指向は、使いやすい機能をまとめて「もの」として扱うことで余計なコードを省くこともできます。
実行結果は下記になります。
まとめ
いかがでしたでしょうか?
今回はphpで使用するクラスとインスタンスの関係性の解説と、それに深く関わるオブジェクト指向という概念について説明しました。
プログラミングを始めたばかりの方からするとオブジェクト指向を理解するのはやや難しいので、本記事の説明や解説コードを参考にゆっくり身につけていけばよいでしょう。
ぜひ活用してみてください。