私は現在、完全に手続き型PHPで書かれたかなり大きなアプリケーションを持っています。私はPHPの経験をさらに深め、オブジェクト指向の手法を使用してアプリケーションの大部分を再コーディングしたいと考えています。
OOPがコードの量を減らし、読みやすくするのに役立つ領域はたくさんあります。ただし、いくつか質問があります。
1) 1つのクラスが任意の数のオブジェクトの青写真として使用されることは私の理解ですが、1つのクラスは1つのオブジェクトのみを表し、複数のオブジェクトを表すことはありません。したがって、1つのクラスでプレーヤーを表すことはできますが、複数のプレーヤーを表すことはできません。
2)含めるクラスがかなりあるので、「ローダー」クラスを使用してそれらすべてを使用してロードしますか、それともアプリケーションのプログラムファイルでspl_autoload_register
使用しますか?spl_autoload_register
編集:それで、私のオートローダーは、オートローディングを開始するためのインスタンスを作成するクラスになるのでしょうか、それとも、複数のファイルで同じコードを繰り返さないようにするために含める関数とspl_autoload_registerを含むphpファイルですか?
3)私のクラスのいくつかは他のクラスに依存しています。私はこれまでにこれに遭遇したことがないので、正直に答えを知りません。メインプログラムファイルにすべてのクラスを含めても、プレーヤークラスに機能する必要のあるクラスが含まれていない場合、メインプログラムにはプレーヤーが依存するクラスが含まれているため、プレーヤークラスは機能しますか?
編集: 1つのクラスがPlayerタイプのオブジェクトをインスタンス化し、Playerクラスがこのクラスに直接含まれていない場合でも、コントローラークラスにはPlayerクラスが含まれているため、引き続き機能しますか?
4)作成しているオブジェクトで作業する必要がある場合が複数あります。どうすればいいのかしら。たとえば、私のPlayerクラスでは、あるプレーヤーから別のプレーヤーに何かを送信する必要がある場合があります。それで、2人のPlayerをパラメーターとして受け取り、転送を行う静的メソッドをPlayerクラスに実装しますか、それとも他のことをしますか?
編集:わかりました。静的メソッドは避けてください。今、私は深刻な問題を抱えています。アプリケーションで複数回実行されるメソッドがありますが、静的メソッドとして実装することはできません。それらをインスタンスメソッドとして実装することになっていますか?たとえば、あるプレーヤーから別のプレーヤーに送信します。Playerオブジェクトを受け取り、そこに送信する、またはそこから送信するインスタンスメソッドを作成しますか?
5)クラスのどのインスタンスにも実際には属していないメソッドがたくさんあり、静的メソッドとしても適切ではありません。これらは、Commonまたは同様の静的メソッドとして独自のクラスで宣言する必要がありますか?この状況で実際に行われていることは何ですか?
編集:これらのメソッドは、使用されている特定のアプリケーションファイルに属しているのでしょうか、それとも独自の「functions.php」ファイルに保存されているのでしょうか。
6)名前空間の使用方法を学びたいのですが、自分のコードが他の人に使用されることはなく、自分のアプリケーションで他の人のコードを使用することもありません。名前空間は私のアプリケーションに不必要に追加されていますか、それとも名前空間の使用方法を学ぶのは良い考えですか?とにかく、1つのアプリケーションに1つの名前空間(アプリケーション名?)がありますか、それとも各クラスはそれ自体の名前空間に属しますか?
7)最後に、データベース接続用に1つのクラスがあり、ネットワークメソッド用に1つのクラスがあるのが一般的ですか?私のアプリケーションには両方が必要です。オブジェクト指向技術を使用するようにコードを変換する際に私が抱えている主な問題は、現在、すべてが1つのモノリシックファイルにあるため、どのメソッドをどこに配置するかを決定することだと思います。
あなたが提供できるどんな助けと洞察にも感謝します。