1

私は手続き型PHPを約8年間プログラミングしてきましたが、ようやくOOPHPを学び始めました。私は多くのチュートリアルを経験しましたが、構文を理解していて、非常に快適に使用できます。ただし、私が見つけられなかったのは、クラスファイル構造を設定する方法と、クラス内からデータベースにアクセスしてクラス内でクエリを実行する方法の実際的な例です。

私の最初の考えは、/ classという名前の個別のフォルダーを作成し、クラスごとにファイルを作成することでした。クラスが別のクラスを拡張した場合、私はinclude()子ファイルの親ファイルになります。私のメインスクリプトでは、必要に応じてクラスを呼び出します。たとえばinclude(/class/member.php)、メンバークラスが必要な場合です。

また、mysqliを拡張するデータベースクラスを作成しました(多くの人がPDO代わりに使用することを提案することを知っています。何らかの理由がある場合は、MySQLを使用しないとは思わないと思いますが、気軽に提供してください) 。私を本当に驚かせたのは、クラスでデータベース接続を開く方法でした。たとえば、私の考えは、を渡すメンバークラスにmember_idあり、次にクラスでクエリを実行して、そのすべてのプロパティをメンバーのプロパティに設定します。最初に、データベースクラスをメインスクリプトに含めてインスタンスを作成し、次にそのハンドルをメンバークラスでグローバルとして宣言しました(グローバルがどのように悪であるかを読みましたが、とにかくそのソリューションは本当に好きではありません)。これを行うためのより良い方法は何ですか?

助けてくれてありがとう!

4

2 に答える 2

5

私の意見では、OOP を学習する最善の方法は、OOP に準拠した既存のコードベースを確認することです。Zend Framework API Docsを確認することをお勧めします。有望だと思われる場合は、フレームワークをダウンロードして練習を始めてください。

Zend Framework の優れた点は、トップダウン MVC またはスタンドアロン ライブラリとして使用でき、PHP コミュニティで頻繁に使用されていることです。

集中するべきいくつかのこと:

  • クラスのオートローディング
  • クラス名がそれぞれのディレクトリ構造体とどのように並ぶか
  • クラスの拡張方法
  • インターフェース
  • 抽象クラス
于 2012-01-12T05:46:34.713 に答える
5

まず、クラスごとに個別のファイルを使用することで、間違いなく正しい方向に進んでいます。これは、現時点ではほとんど標準的な方法と考えられています。クラスのオートローディングとspl_autoload_register. 最初にオートローダを設定することを強くお勧めします。クラス ファイルをインクルードする前に、数え切れないほどinterface_existsの呼び出しを行う必要はありません。class_exists

次に、データベース呼び出しについてです。ここで同様の質問に答えましたが、基本的な要点は、単一のデータベース インスタンスを作成し、それをデータベース アクセスが必要なクラスに挿入することです。限りmysqli、それがあなたの好きなものなら、それを使ってください。古い非推奨の を使用していないのは素晴らしいことですmysql_*

于 2012-01-12T05:51:14.350 に答える