ホームページ >バックエンド開発 >PHPチュートリアル >実用的なOOP:クイズアプリの構築 - ブートストラップ

実用的なOOP:クイズアプリの構築 - ブートストラップ

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-02-19 08:35:08969ブラウズ

Practical OOP: Building a Quiz App - Bootstrapping

この記事では、PHPを使用して保守可能で拡張可能なクイズアプリケーションの構築を詳述し、固体原理とドメインモデルとサービスレイヤーパターンに焦点を当てています。 PHP MVC開発に対する私の以前のアプローチには、まとまりのある応用構造と懸念の分離についての真の理解がありませんでした。このシリーズはそれを修正します

重要な概念:

    Solid Principles&MVC:この記事は、MVCだけの限界を強調し、堅牢なオブジェクト指向プログラミングのための固体原理のより深い理解と適用を提唱しています。
  • レイヤードアーキテクチャ:クイズアプリは、簡単なコンポーネント置換(データベース、UIなど)のために、レイヤー(ドメインモデル、サービスレイヤー、プレゼンテーションレイヤー)で構成されています。
  • ドメインモデルパターン:データベーススキーマは、オブジェクト指向の設計をミラーリングし、直接データベースミラーリングよりもクリーンコードに優先順位を付けます。
  • サービスレイヤーパターン:
  • このパターンは、ビジネスロジックをカプセル化し、基礎となるクラスの操作を切り離し、異なるインターフェイス(Web、CLI)で再利用性を可能にします。 実用的な実装:この記事では、サービスクラスのコーディング、インターフェイスの定義、エンティティとしてのクイズと質問のモデリングなど、アプリケーションを設定するための段階的なガイドを提供します。プレースホルダーマッパーは、初期のデータベースインタラクションを簡素化します
  • なぜMVCが十分ではないのか:
  • MVCは価値がありますが、その過剰使用は、クラス内で偽装されている構造が不十分で、準監視指向または手続き型コードを導きます。 このプロジェクトでは、ドメインモデルパターン(Martin Fowlerのエンタープライズアプリケーションアーキテクチャのパターン)を使用して、真にオブジェクト指向のシステムを作成します。 このチュートリアルには、マニュアルの簡素化されたマッパーを使用して、オブジェクトリレーショナルマッピング(ORM)が認められますが、延期されます。 サービスレイヤーは、複雑な操作のために複数のクラスを調整するという課題に対処します。
  • サービスレイヤー:

優れたオブジェクト指向の設計の基礎である分離コードには、独立したクラスを組み合わせるメカニズムが必要です。サービスレイヤーは、システムの操作を専用のサービスクラスにグループ化することでこれを実現し、さまざまなアプリケーションパーツ(Web、CLIなど)にわたって再利用性を促進します。

プロジェクトのセットアップ(SLIMを使用):

軽量のフレームワークである Slimは、シンプルさのために使用されます。

ファイルは、依存関係管理用に提供されています:

Quiz Service Interface():

このインターフェイスは、コアクイズ操作を定義しています:

クイズマッパーインターフェイス(

):composer.json

マッパーインターフェイスは、データベースのインタラクションを処理します:

<code class="language-json">{
    "require": {
        "slim/slim": "2.*"
    },
    "autoload": {
        "psr-4": {"QuizApp\": "./lib/"}
    }
}</code>

エンティティ(Question.phpおよびQuiz.php):

これらのクラスは、クイズの質問とクイズ自体をモデル化します:

<code class="language-php"><?php
namespace QuizApp\Service;

interface QuizInterface {
    /** @return Quiz[] */
    public function showAllQuizes();
    public function startQuiz($quizOrId);
    /** @return Question */
    public function getQuestion();
    /** @return bool */
    public function checkSolution($id);
    /** @return bool */
    public function isOver();
    /** @return Result */
    public function getResult();
}</code>

プレースホルダーマッパー(Hardcoded.php):

テスト用のハードコーディングデータを備えた一時的なマッパー:

<code class="language-php"><?php
namespace QuizApp\Mapper;

interface QuizInterface {
    /** @return \QuizApp\Entity\Quiz[] */
    public function findAll();
    /** @param int $i @return \QuizApp\Entity\Quiz */
    public function find($i);
}</code>

結論と次のステップ:

この最初の部分は基礎を設定します。 次のパートでは、サービスクラスの実装、実際のデータベースマッパー(おそらく教義を使用している可能性が高い)の作成、およびコントローラーとビューの開発が含まれます。 モジュラー設計により、保守性と拡張性が保証されます。 このパートの完全なソースコードは[ソースコードへのリンク]です。

(簡単に削除されたFAQSセクション。FAQはよく書かれており、別のフォローアップ記事に含めることができます。)

以上が実用的なOOP:クイズアプリの構築 - ブートストラップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。