見出し画像

PHPとオブジェクト指向(PHP part3)

●そもそも「オブジェクト指向」とは?

オブジェクト指向とは、複数のオブジェクトを組み合わせてプログラムを構築する考え方です。
オブジェクトとはデータと処理のまとまりです。漠然とした集まりではなく、一つのテーマを持った集まりです。

アプリケーションを作る上で、オブジェクト指向を全く取り入れずにアプリケーションを作ることもできます。アプリケーションがオブジェクト指向で作られたかどうかはユーザーに気づかれることはなく、サービスの体験が変わるわけではありません。

では、オブジェクト指向の意義は何なのでしょうか??

オブジェクト指向はユーザーのための知識ではなく、開発者同士の円滑なコミュニケーションのためにあります。

オブジェクト指向の意義をざっと振り返ったところで、PHPにおけるオブジェクト指向プログラミングに必要な基礎知識を振り返ります。


●クラスとインスタンス

◯クラス

PHPのオブジェクト指向では「クラス」というオブジェクトの設計図を作成し、クラス(設計図)を元にオブジェクト(実体)を生成します。

それでは、実際にクラスの書き方の例をまとめます。
クラスは下のコードのように「class クラス名」と定義し、「{}」の間に、そのクラスの内容を書いていきます。
注意点として、クラス名は大文字で始めます。

<?php

    class Car {
        // クラスの内容を書く
    }

?>


◯インスタンス

クラスを元に生成された実体を「インスタンス」と呼びます。ここでいうインスタンスはオブジェクトと同意です。

インスタンスは「new クラス名()」で生成できます。
また「$変数名 = new クラス名()」のようにすることで生成したインスタンスを変数に代入することもできます。

<?php

    class Car {
    }

    $car1 = new Car();
    $car2 = new Car();
    $car3 = new Car();

?>

上の例では、Carというクラス(設計図)を元に『 car1, car2, car3 』とインスタンス(実体)を生成しています。


●プロパティとメソッド

クラスとインスタンスの概念がわかった次は、「プロパティ」と「メソッド」です。

クラスにはインスタンスが持つ「プロパティ」と「メソッド」の2つを定義します。
プロパティとはインスタンスが持つデータのことで、メソッドはインスタンスに関連する処理(関数)のことです。


◯プロパティ

プロパティは「public $プロパティ名」のように定義します。
publicではなくprivateをつけることもありますが、これにはカプセル化を学ぶ必要があるため省略します。

<?php

class Car {

    public $name; // nameプロパティの定義

}

?>


◯プロパティへのアクセス

プロパティへのアクセスは、「インスタンス->プロパティ名」と記述することで可能です。

<?php

class Menu {
    public $name;
}
$car1 = new Car();
$car1->name = 'BMW';   //プロパティに値をセット

echo $car1->name;      //セットした値にアクセス

// 出力結果: BMW

?> 


◯メソッド

メソッドは「public function メソッド()」のように定義します。
またメソッドを呼び出す際は、「インスタンス->メソッド名()」と記述します。

<?php

class Car {
    
    public function drive() {
        echo '車に乗ってドライブ';
    }
}

$car1 = new Car();
$car1->drive();     // メソッドの呼び出し

?>


今回はオブジェクト指向の概念の学習をするにあたり、PHPでのクラス・インスタンスの定義やメソッドやプロパティをまとめました。
ですが、今回学習した内容に加え、さらにPHPでは様々なメソッドの定義方法やアクセス方法があるようです。

次回以降、これらを発展した技術をアウトプットしていきます。


この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
1
エンジニア転職を目指す23歳 大学での、C言語、C++、Python、Linuxの学習経験あり。 テックキャンプにて、Ruby、javascript、Haml、Scss、SQL、AWS等の学習をしています。 現在は、転職活動と並行してPHPの独学とPythonの復讐をしています!