3

そのため、Laravel 5 は新しいフォルダー構造を持ち出し、カスタム クラスを管理する最善の方法を見つけようとしています (PhpSpec テストを念頭に置いてください)。

以前、私はこのようなことをしていました

  • アプリ
    • Apes(私のカスタムクラスが開催された場所)
    • モデル
    • コントローラー

新しい構造では、新しいディレクトリ構造に合わせてクラスをセグメント化しようとする必要がありますか? たとえば、現在アプリに Http フォルダーがあります。関連するカスタム クラスをそのディレクトリに追加する必要がありますか?

  • アプリ
    • Http
      • 類人猿
        • SomeHttpClass
      • コントローラー
      • ミドルウェア
    • プロバイダ
      • 類人猿
        • MyServiceProvider
      • AppServiceProvider.php

これはおそらく個人的な好みなどの問題であることは承知していますが、新鮮な新しい L5 プロジェクトをレイアウトするためのベスト プラクティス アプローチについて頭を悩ませていました。

任意の推奨事項をいただければ幸いです。

アップデート

しばらくいじくり回した後、私にとってはうまくいくアプローチに落ち着きました(これは小さなアプリです。

  • アプリ
    • コンソール
    • ハンドラー
    • ヘルパー
    • Http
      • コントローラー
        • 管理者
        • 公衆
      • ミドルウェア
      • リクエスト
    • プロバイダ
    • リポジトリ
      • AbstractDbRepository.php
      • ClientRepositoryInterface.php
      • DbClientRepository.php
      • DbScheduleRepository.php
      • ScheduleRepositoryInterface.php
    • スケジュール
      • 例外
      • スケジュール.php
      • ScheduleCalculator.php
      • ScheduleInputTransformer.php
      • ScheduleTimes.php
    • 特徴
    • SimpleModel.php

モデルがかなり単純な場合はアプリのルートにそのまま残しますが、より広範なテストが必要なより複雑なモデルの場合は、リポジトリ パターンを使用することにしました。

コントローラーを元の場所に保管しましたが、管理者/パブリックに細分化しました。このための小さな API も作成する可能性があり、おそらく API に関連するすべてのものを app/Api に配置します。

4

3 に答える 3

2

この段階では、L5 はまだ大規模な変更を行っています。それを行う方法についての「最善のアプローチ」はまだありません。答えは、L5 が実際にリリースされるまで、時間の経過とともに変化します。

現実には、さまざまな方法でそれを行うことができ、すべて問題ありません。Taylor は常に、自分が望むようにアプリを構築するよう言っています。他の誰かがそのようにしろと言ったからではありません。

于 2014-10-09T23:27:36.187 に答える
0

コントローラー、ビュー、またはモデルを配置する標準的な方法に固執する必要さえありません。それらのほとんどは、App フォルダー内の 1 つのファイルで 1 行だけ変更する必要があるためです。変更したいディレクトリへの参照をファイルで簡単に検索したところ、次のものがすぐに見つかりました。

デフォルトのコントローラ ディレクトリは app/Providers/RouteServiceProvider.php に設定されています。

protected $namespace = 'App\Http\Controllers';

同じファイルで、routes.php ファイルのパスを変更できます。

public function map(Router $router)
{
    $router->group(['namespace' => $this->namespace], function ($router) {
        require app_path('Http/routes.php');
    });
}

モデルへのパスを変更するには、他のファイルで正しい名前空間を使用するように参照を変更するだけです。たとえば、ユーザー モデルは次のファイルで参照されます。

config/auth.php
config/services.php
データベース/factories/ModelFactory

もちろん、移動したすべてのファイルの名前空間を変更する必要があります。

于 2015-09-09T16:35:47.580 に答える
0

Taylor Otwell は、次のブログ投稿で Userscapes Snappy の構造を概説しています: http://blog.userscape.com/post/organizing-snappy

Laravel 4.x に基づいていますが、一読の価値があります。

また、Laravel.io のソース コードには、ドメインで区切られた興味深い構造があります: https://github.com/LaravelIO/laravel.io

于 2014-11-11T01:53:12.553 に答える