カプセル化はオブジェクト指向プログラミングの中核概念の 1 つであり、コードの保守性と再利用性の向上に役立ちます。 PHP では、カプセル化の実現は主に、アクセス制御、Getter/Setter メソッド、マジック メソッド、およびラッパー クラスに依存します。
PHP には、クラス メンバーのアクセス スコープを制御するための 3 つのアクセス修飾子が用意されています。
 public: メンバーはどこからでもアクセスできます
protected: メンバーは現在のクラスとそのサブクラス内でのみアクセスできます。
 private: メンバーは現在のクラス内でのみアクセスできます
class MyClass {
    public $publicVar;
    protected $protectedVar;
    private $privateVar;
    public function publicMethod() {
        // どこからでもアクセス可能
    }
    protected function protectedMethod() {
        // 現在のクラスとサブクラス内でのみアクセスできます
    }
    private function privateMethod() {
        // 現在のクラス内でのみアクセスできます
    }
}メンバー変数へのアクセスをより細かく制御するには、Getter メソッドと Setter メソッドを使用します。 Getter メソッドはメンバー変数の値を取得するために使用され、Setter メソッドはメンバー変数の値を設定するために使用されます。同時に、プロセス中にデータの検証または処理を実行できます。
 class MyClass {
    private $name;
    public function getName() {
        return $this->name;
    }
    public function setName($name) {
        $this->name = $name;
    }
}PHP には、オブジェクトの作成、破棄、プロパティ アクセスのための特別なマジック メソッドがいくつか用意されています。 __get メソッドと __set メソッドは、存在しないメンバー変数またはアクセスできないメンバー変数にアクセスするときにカプセル化を提供します。
 class MyClass {
    private $data = [];
    public function __get($name) {
        if (isset($this->data[$name])) {
            return $this->data[$name];
        } else {
            throw new Exception("Property '$name' does not exist.");
        }
    }
    public function __set($name, $value) {
        $this->data[$name] = $value;
    }
}ラッパー クラスは、1 つ以上の基礎となるクラスをカプセル化し、上位レベルのインターフェイスを提供することで、特定の実装の詳細を隠し、コードを使いやすくします。
 class Database {
    public function connect() {
        // データベースに接続する
    }
    public function query($sql) {
        // クエリの実行
    }
    public function close() {
        // データベース接続を閉じる
    }
}
class DatabaseWrapper {
    private $database;
    public function __construct(Database $database) {
        $this->database = $database;
    }
    public function fetchData($sql) {
        $this->database->connect();
        $result = $this->database->query($sql);
        $this->database->close();
        return $result;
    }
}PHP でカプセル化を実現するには、主にアクセス制御、Getter メソッドと Setter メソッド、マジック メソッド、およびラッパー クラスに依存します。これらのメソッドは、シンプルで使いやすいインターフェイスを提供しながら、オブジェクトの内部詳細へのアクセスを効果的に制限できるため、コードの保守性、再利用性、開発効率が向上します。