【 PHP 】PHP8に入門してみた 221日目 PHPの基本 ( オブジェクト指向 自動ローディング )

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

オブジェクト指向

自動ローディング

PHPにはクラスを自動で読み込む自動ローディングの仕組みが用意されています。
この自動ローディングにはオートローダーが大活躍します。

オートローダーは自動的に必要なクラスファイルを読み込むための機能です。
これにより、手動でクラスファイルを読み込む必要がなくなりコードの再利用性と保守性が向上します。

オートローダーは、PHP標準のオートローダーであるspl_autoload_register()関数を使用して実装されます。
この関数を使用すると、オートローダー関数を登録できます。
オートローダー関数は、クラスが定義されていない場合に呼び出され、クラス名からクラスファイルを自動的にロードする責任を負います。
以下の場合、クラスが定義されていない場合にmy_autoloader()関数が呼び出され、クラス名に基づいてファイルが読み込まれます。

function my_autoloader($class_name) {
    include $class_name . '.php';
}

spl_autoload_register('my_autoloader');

クラスが定義されていない?というのはどういうこと?

「クラスが定義されていない場合」とは、現在のスクリプトで使用されているクラスが定義されていない場合を指します。
たとえば、クラスが定義されているファイルが読み込まれていない場合、またはクラス名がタイプミスされている場合などが該当します。

この場合、「クラスが定義されていない」というエラーが発生します。
オートローダーは、このエラーが発生した場合に自動的に呼び出され、クラス名に基づいて適切なファイルを読み込むことで、エラーを解消する役割を果たします。

オートローダーのメリットとデメリット

オートローダーを使用するとクラスの使用方法に関係なく、必要なクラスファイルが自動的に読み込まれるためコードを簡潔に保つことができます。
しかし、オートローダーは正しい名前空間を使用することが必要であることに注意する必要があります。
また、オートローダーを使用する場合でも、適切なセキュリティ対策を講じることが重要です。

Composerでもでてきたオートローダー

Composerのオートローダーはspl_autoload_register()関数を使用して、自動的に必要なクラスファイルを読み込むことができます。

Composerのオートローダーはプロジェクトの依存関係に基づいて、自動的にクラスファイルを読み込みます。
たとえば、Composerでライブラリをインストールした場合、オートローダーはそのライブラリのクラスファイルを自動的に読み込みます。
また、Composerは、名前空間に基づいてクラスファイルを自動的に読み込むことができるため、クラス名のタイプミスやファイルの不足によるエラーを防ぐことができます。

Composerのオートローダーは、一般的に、プロジェクトのルートディレクトリにあるvendor/autoload.phpファイルを使用してロードされます。
このファイルには、Composerによって生成されたオートローダーのコードが含まれており、プロジェクトのすべてのファイルで使用することができます。

Composerのオートローダーは、PHPの標準的なオートローダーと同様の機能を持っていますが、Composerのオートローダーは、依存関係に基づいて自動的にクラスファイルを読み込むことができ、効率的な依存関係管理を実現することができます。

標準 VS Composer

どちらを使用するかは、プロジェクトの規模や目的によって異なります。

PHPの標準オートローダーは、基本的なオートローダーの機能を提供します。
それに対して、Composerのオートローダーは、依存関係の管理に特化しており、依存関係の自動解決とクラスファイルの自動読み込みを提供します。
したがって、Composerを使用する場合、依存関係の管理が簡単になり、パッケージを簡単にインストールできるという利点があります。

プロジェクトが小規模であり依存関係が少ない場合、標準オートローダーを使用することが適切である場合があります。
プロジェクトが大規模であり、多数の依存関係がある場合、Composerのオートローダーを使用することが推奨されています。

総合的に見ると、「Composerのオートローダー」を使用することがプロジェクトの管理や保守性の向上につながる場合が多いと言われています。
ただし、自分でオートローダーを実装することで、より細かい制御やカスタマイズを行うことができるため、
プロジェクトの要件に合わせて適切なオートローダーを選択することが大切です。

メモ

状況による!

PHPPHP

Posted by raika@blog