Laravel複雑プロジェクト開発規範

4460 ワード

プロジェクト仕様


拡張パッケージ


プロジェクトに生産環境拡張パッケージを追加することは厳禁です
必要な拡張はプロジェクト計画の初期にすでに含まれています.もし本当になかったら、コミュニケーションして解決してください.
テスト用の拡張子を導入する必要がある場合は、--devパラメータを追加します.
composer require laracasts/generators --dev

テスト用のサービスプロバイダは、手動で登録し、環境判断を加える.
public function register()
{
    if ($this->app->environment() == 'local') {
        $this->app->register('Laracasts\Generators\GeneratorsServiceProvider');
    }
}

構成情報と環境変数


1、環境関連の配置は一律に置く.Envファイルの中で、他の場所は置いてはいけません.同期してください.env.example 2、プロファイルでの読み取りのみを許可する.Envファイル、残りの場所ではenv()3、すべてのプログラム構成を構成ディレクトリに配置することを厳禁し、config()を使用して4、データベース構成の読み取りを取得し、db_を使用します.config()取得5、プロファイルに閉パッケージを書かない
重要:コンフィギュレーションファイル以外の場所でenv()を使用しないでください.すべての環境変数はコンフィギュレーションファイルにあります.config()で取ります.そうでないと、オンラインになった後の構成キャッシュに影響します.

ほじょかんすう


補助関数の作成は厳禁です.使用することはありません.
ビジネス関連はServices層、データ関連はRepository層、ツールでもClassにカプセル化するLaravel 6.*で説明している各メニュー項目からアクセスしてください.

ツールの統合


PHPStormを使用して、コードヒント(ide-helper)とフレームワークプラグイン(laravel)をインストールしてください.
キー位置をsublime-text(macOs)に調整してください.そうしないと、チームを組んでプログラミングするときに違和感があります.
キーボードのcommandキーをスペースキーの左側に置いてください.そうしないと、他の人がパソコンの操作に来て違和感を感じます.
その他は勝手です.

コーディング仕様


ルート


以下の点をしっかり覚えてください:1、ルートファイルの中でいかなる閉パッケージを書くことを厳禁します2、Restful規則が覚えられないで、ルートの命名が規範的ではありませんて、結果がとても深刻なことを発見しました3、resourceを使ってルートを定義することを厳禁して、むしろ2行多く打って、さもなくば空のルートが現れやすくて、しかも書きにくいです4、ルートの命名は書かなければならなくて、ルートの注釈は書かなければなりません

ルーティングモデルバインド


使用できる場所は必ず使用し、フィールドに違いがあるapp/Providers/RouteServiceProvider.phpのbootでカスタマイズします.
    public function boot()
    {
        Route::bind('user_name', function ($value) {
            return User::where('name', $value)->first();
        });

        Route::bind('photo', function ($value) {
            return Photo::find($value);
        });

        parent::boot();
    }

モデルモデルモデル


ネーミング仕様

  • データモデルクラス名 は「単数」であり、例えば:App\Models\Photo
  • 類ファイル名 は「単数」であり、例えば:app/Models/Photo.php
  • データベーステーブル名 は「複数」であり、複数の単語の場合「Snake Case」を使用する場合:photosmy_photos
  • データベーステーブル移行名 は「複数」、例えば:2014_08_08_234417_create_photos_table.php
  • データ埋め込みファイル名 は「複数」、例えば:PhotosTableSeeder.php
  • データベースフィールド名 は「Snake Case」、例えば:view_countis_vip
  • データベーステーブルプライマリ・キー は「id」
  • です.
  • データベース表外キー は「resource_id」、例えば:user_idpost_id
  • データモデル変数 は「resource_id」、例えば:$user_id$post_id
  • Traitによるデータモデルの拡張


    モデル自体は、フレームワーク自体が提供するメソッドおよびプロパティのみを格納できます.たとえば、1、フィールドの入力を許可するプロパティ2、モデルに関連付けられたすべてのメソッド3、アクセサ、モディファイヤ、コンバータ4、クエリー範囲の定義...
    範囲外の方法では,サービス層へのトラフィックの配置に関与する場合,モデルをサービスに注入して操作する.実際の状況に応じて、トラフィックに関係しないTraitまたはRepositoryレイヤに配置されます.

    SQLファイルについて


    直接データを操作しないで、直接SQLをエクスポートしないで、直接データをシミュレートしないでください

    せいぎょそうち


    フロントコントローラの名前には複数の形式が使用され、バックグラウンドコントローラの名前には単数の形式が使用されます.例:
    フロント:PhotosController、UserPhotosControllerバックグラウンド:PhotosController、UserPhotosController
    こちらはファイルの迅速な位置決めが便利です.
    次の点に注意してください.
  • メソッドの名前には、
  • が少し長くても可読性が必要です.
  • 方法内部は真剣に注釈を書いて、原因、作用
  • をはっきり書いてください
  • コントローラには「プライベートメソッド」と書かないで、中には「ルーティング動作メソッド」しか存在しないはずで、ルーティングと1つ1つに対応する
  • ない方法は注釈全体を除いて、注釈の
  • を明記する.
    特に注意:複数のルーティングペアを同じコントローラメソッドには厳禁、同じように、複数の変換レイヤペアを同じコントローラメソッドには厳禁

    ユーザ認証


    ユーザー認証は、次のようなコントローラ・レイヤに配置します.
    public function __construct()
    {
        $this->middleware('auth', [            
            'except' => ['show', 'index']
        ]);
    }
    

    Restfulは本当にユーザ認証をルーティングに置くのに適していないので,同じリソースのルーティングをばらばらに書くことができる.将来のアプリケーションの発展傾向も、ログインが必要な機能を減らすに違いない.

    フォーム検証


    単純なクエリーロジックは、検証を書く必要がなく、条件が空の場合を手動で考慮します.その他のすべての場合は、「フォームリクエスト検証クラス」を使用する必要があります.
    認証クラスでは、次の方法でコード量を削減できます.
    public function rules()
    {
        switch($this->method())
        ...
    

    認証ポリシー


    認証ポリシーを使用してユーザー認証を行う必要があります.権限を越えてデータを操作する場合、結果は深刻です.コントローラではできるだけauthorizeメソッドで判断し、もちろん$user->can()も使えます.

    テスト


    プログラマーは自分でオンラインテストをしてから、ビジネステストに行かなければなりません.詳細はプログラマーだけが知っています.