PHPのクラスについて

プログラミング

はじめに

PHPは、オブジェクト指向プログラミング(OOP)をサポートしている強力なスクリプト言語です。

そんなオブジェクトとクラスは、オブジェクト指向プログラミングの中心的な概念であり、コードの再利用性と保守性を高めるために重要です。

今回はPHPのクラスの基本的な概念と、使用方法についてまとめていきます。

クラスとは

クラスは一言で言うと、オブジェクトを作成するための設計図のようなものです。
クラスにはプロパティ(変数)メソッド(関数)が含まれています。

プロパティはオブジェクトのデータを保持し、メソッドはそのデータを操作するための機能を提供します。

 

クラスの定義

PHPでクラスを定義するには“class”キーワードを使用します。
以下にシンプルなクラスの例を示します。

<?php
class Person {
    // プロパティの定義
    public $name;
    public $age;
    
    // コンストラクタの定義
    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
    
    // メソッドの定義
    public function introduce() {
        echo "こんにちは、私は{$this->name}で、{$this->age}歳です。";
    }
}

// クラスのインスタンス化
$person1 = new Person("太郎", 25);
$person1->introduce();
?>

上記のコードでは、’Person’というクラスを定義しています。
このクラスには、‘$name’‘$age’という2つのプロパティがあります。
また、コンストラクタメソッド(’__construct’)‘introduce’メソッドが定義されています。
‘__construct’メソッドは、オブジェクトが作成されたときに自動的に呼び出され、プロパティに初期値を設定します。

 

プロパティとメソッドの可視性

PHPでは、プロパティとメソッドに対してアクセス制御を設定することができます。
可視性には、以下の3種類があります。

public:クラスの外部からでもアクセス可能
protected:同じクラスとその子クラスからのみアクセス可能
private:同じクラスからのみアクセス可能

<?php
class Person {
    public $name;
    protected $age;
    private $salary;
    
    public function __construct($name, $age, $salary) {
        $this->name = $name;
        $this->age = $age;
        $this->salary = $salary;
    }
    
    public function introduce() {
        echo "こんにちは、私は{$this->name}です。";
    }
    
    protected function getAge() {
        return $this->age;
    }
    
    private function getSalary() {
        return $this->salary;
    }
}

$person1 = new Person("太郎", 25, 500000);
$person1->introduce(); // OK
// echo $person1->age; // エラー
// echo $person1->salary; // エラー
// echo $person1->getAge(); // エラー
// echo $person1->getSalary(); // エラー
?>

上記のコードでは、‘$name’プロパティは‘public’として定義されているので、クラスの外部からでもアクセスできます。

一方で、‘$age’プロパティは‘protected’として定義しているので、クラスの外部からはアクセスできません。

同様に‘$salary’プロパティは‘private’として定義されており、クラスの外部からも、子クラスからもアクセスできないように制御されています。

 

継承

PHPのクラスは、継承を通じて他のクラスのプロパティやメソッドを引き継ぐことができます。
これにより、コードの再利用性が向上し、‘extends’キーワードを使用してクラスを継承します。

<?php
class Employee extends Person {
    public $position;
    
    public function __construct($name, $age, $salary, $position) {
        parent::__construct($name, $age, $salary);
        $this->position = $position;
    }
    
    public function introduce() {
        parent::introduce();
        echo " 私は{$this->position}です。";
    }
}

$employee1 = new Employee("花子", 30, 600000, "マネージャー");
$employee1->introduce();
?>

上記のコードでは、‘Employee’クラスが‘Person’クラスを継承しています。
これにより、‘Person’クラスのプロパティとメソッドを‘Employee’クラスで使用できるようになります。

また、‘Employee’クラスの‘introduce’メソッドは、親クラスの‘introduce’メソッドを呼び出しています。

 

静的メソッドとプロパティ

クラスメソッドやプロパティを静的に定義することも出来ます。
静的メソッドやプロパティは、インスタンス化しなくてもアクセスできます。
‘static’キーワードを使用して定義します。

<?php
class MathUtil {
    public static $pi = 3.14;
    
    public static function add($a, $b) {
        return $a + $b;
    }
}

echo MathUtil::$pi; // 3.14
echo MathUtil::add(2, 3); // 5
?>

上記のコードでは、‘MathUtil’クラスのプロパティ‘$pi’とメソッド‘add’が静的に定義されています。

これにより、クラス名を通じて直接アクセスすることができるようになります。

 

まとめ

PHPのクラスは、オブジェクト指向プログラミングの強力なツールです。
クラスを使いこなすことで、コードの再利用性、保守性、可読性が向上します。

今回は基本的な使い方をコード例を交えながら説明してみました。
基礎がしっかりしていないと、質の悪いコードや効率の悪い処理に繋がってしまうので、更なる理解を行っていきたいです。

コメント

  1. […] 松の木/駆け出しエンジニア2024.07.25PHPとクラスの関係性https://matsunoki009en.blo… […]

  2. […] 松の木/駆け出しエンジニア2024.07.25PHPとクラスの関係性https://matsunoki009en.blo… […]

  3. […] Next post […]

タイトルとURLをコピーしました