TECH I.S.

PHP OOP - クラスとオブジェクト


クラスはオブジェクトのテンプレートであり、オブジェクトはクラスのインスタンスです。


OOPケース

Fruitという名前のクラスがあるとします。 Fruitは、名前、色、重さなどのプロパティを持つことができます。これらのプロパティの値を保持するために、$name、$color、$weightなどの変数を定義できます。

個々のオブジェクト(リンゴ、バナナなど)が作成されると、それらはクラスからすべてのプロパティと動作を継承しますが、各オブジェクトはプロパティに対して異なる値を持ちます。


クラスを定義する

クラスは、classキーワードの後に​​、クラスの名前と一対の中括弧({})が続きます。すべてのプロパティとメソッドは中括弧の中に入れます。:

構文

<?php class Fruit {   // code goes here... } ?>

以下では、2つのプロパティ($nameと$color)と、$nameプロパティを設定および取得するための set_name()とget_name()の2つのメソッドで構成されるFruitという名前のクラスを宣言します。

<?php class Fruit {   // Properties   public $name;   public $color;   // Methods   function set_name($name) {     $this->name = $name;   }   function get_name() {     return $this->name;   } } ?>

注:クラスでは、変数はプロパティと呼ばれ、関数はメソッドと呼ばれます。


オブジェクトを定義する

クラスはオブジェクトなしでは意味がありません!クラスから複数のオブジェクトを作成できます。各オブジェクトには、クラスで定義されたすべてのプロパティとメソッドがありますが、プロパティ値は異なります。

クラスのオブジェクトは、newキーワード。

以下の例では、$appleと$bananaはFruitクラスのインスタンスです。

<?php class Fruit {   // Properties   public $name;   public $color;   // Methods   function set_name($name) {     $this->name = $name;   }   function get_name() {     return $this->name;   } } $apple = new Fruit(); $banana = new Fruit(); $apple->set_name('Apple'); $banana->set_name('Banana'); echo $apple->get_name(); echo "<br>"; echo $banana->get_name(); ?>

以下の例では、$colorプロパティを設定および取得するために、Fruitクラスにさらに2つのメソッドを追加します。

<?php class Fruit {   // Properties   public $name;   public $color;   // Methods   function set_name($name) {     $this->name = $name;   }   function get_name() {     return $this->name;   }   function set_color($color) {     $this->color = $color;   }   function get_color() {     return $this->color;   } } $apple = new Fruit(); $apple->set_name('Apple'); $apple->set_color('Red'); echo "Name: " . $apple->get_name(); echo "<br>"; echo "Color: " . $apple->get_color(); ?>


PHP - $thisキーワード

$thisキーワードは現在のオブジェクトを参照し、メソッド内でのみ使用できます。

次の例を見てください。

<?php class Fruit {   public $name; } $apple = new Fruit(); ?>

では、$nameプロパティの値はどこで変更できるでしょうか。次の2つの方法があります。

  1. クラス内(set_name()メソッドを追加して$thisを使用):

<?php class Fruit {   public $name;   function set_name($name) {     $this->name = $name;   } } $apple = new Fruit(); $apple->set_name("Apple"); echo $apple->name; ?>

  1. クラス外(プロパティ値を直接変更):

<?php class Fruit {   public $name; } $apple = new Fruit(); $apple->name = "Apple"; echo $apple->name; ?>


PHP-インスタンス

instanceofキーワードを使用すると、オブジェクトが特定のクラスに属しているかどうかを調べることができます:

<?php $apple = new Fruit(); var_dump($apple instanceof Fruit); ?>



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細