ホームページ  >  記事  >  PHPフレームワーク  >  視力! Laravel 開発をスピードアップするキラーコンポーネントがオープンソースになりました。

視力! Laravel 開発をスピードアップするキラーコンポーネントがオープンソースになりました。

藏色散人
藏色散人転載
2020-10-13 10:23:012053ブラウズ

# laravel チュートリアル列によって以下が紹介されています! , 困っている友達のお役に立てれば幸いです!

視力! Laravel 開発をスピードアップするキラーコンポーネントがオープンソースになりました。

今日は、Laravel 固有のコンポーネントをお勧めします: Sight
Laravel の開発速度は最速と言えます。ただし、ここで Sight を追加すると、開発スピードがさらに速くなります。
Sight は何をしましたか?
Sight はサーバー側にプレゼンター層を実装しました。これにより、サーバーから取得したデータを表示可能なデータに簡単に変換できます。 Sightの導入以来、LaravelはサーバーサイドのMVPモデルをサポートする唯一のフレームワークになりました。
Sight を使用する理由?
まず、開発をスピードアップするためです。
2. 国内の Phpers は皆、大手メーカーが 3 つ以上のテーブルの SQL 結合を禁止していることを知っています。初心者の場合は、FOR ループでデータベースにクエリを実行します。禁止した場合、関連IDを抜き取った可能性があります。結果を確認し、FOR ループ内に FOR ループをネストして、関連する関連データを確認します。
Sight は非常に優れた Pluck 機能を提供しており、ID を見つけた後、関連するデータをリクエストして Sight に渡すと、Sight がデータを結合してくれます。 ID と KEY を関連付けてデータを整理します。これにより、プログラムの効率が大幅に向上します。
3. Sight の使用は非常に簡単です。
たとえば、次の例は Model の使用とほぼ同じです。

namespace App\Presenter

use Bardoqi\Sight\Presenter;
use Bardoqi\Sight\Traits\PresenterTrait;
use Bardoqi\Sight\Enums\MappingTypeEnum 
use Bardoqi\Sight\Enums\PaginateTypeEnum 
use App\Repositories\ArticleRepository;
use App\Repositories\UserRepository; 

class ArticlePresenter extents Presenter
{
   use PresenterTrait;

   public function getArticleList($where)
   {
       $articleArray = ArticleRepository::getList($where);
       $user_ids = $this->selectFields('id','title','created_at','created_by')
            ->fromLocal($articleArray,'articles')
            ->pluck('created_by');
       $users = UserRepository::getUsersWithIds($user_ids);
       $this->innerJoinForeign($users,'userss')
            ->onRelationByObject(Relation::of()
                ->localAlias('articles')
                ->localField('created_by')
                ->foreignAlias('users')
                ->foreighField('id')) 
            ->addFieldMappingByObject(FieldMapping::of()
                ->key('created_at')
                ->src('created_at')
                ->type(MappingTypeEnum::METHOD_NAME))
            ->addFieldMappingByObject(FieldMapping::of()
                ->key('created_by')
                ->src('user_name')
                ->type(MappingTypeEnum::JOIN_FIELD));         
       return $this->toPaginateArray(PaginateTypeEnum::PAGINATE_API);
   }
}

上の例では、コードは created_at を int から time に変換し、created_by をユーザー ID からユーザー名に変換します。
created_at は MappingTypeEnum::METHOD_NAME を使用していることがわかります。このメソッドはどこにありますか? PresenterTrait にあります。したがって、独自の特性を定義することもできます。
created_by は、MappingTypeEnum::JOIN_FIELD が使用されているため、連想配列内の user_name を直接読み取ります。
上記のコードは少し長いように見えますが、onRelationByObject() は代わりに onRelation() パラメータ渡しメソッドを使用できるため、コードは短くなります。
addFieldMappingByObject() と同じですが、代わりに addFieldMappingList() を使用して配列を渡します。コードは短くなります。

Sight は単なるこの機能ではなく、MySQL によって取得されるデータだけでなく、ElasticSearch によって取得されるデータもサポートします。
これは純粋な配列操作ですが、innerJoin と externalJoin もあり、hasOne、hasMany...
もちろん、他にも関数があります。ドキュメントを注意深く読む必要があります。

Sight は、データを見つけた後、そのデータを表示可能なデータに変換するという問題を解決しようとします。これはうまく機能し、コーディングをより楽しく、より迅速にコーディングできるようになります。

Github アドレス: https://github.com/BardoQi/Sight

Sight - Laravel 開発をスピードアップするキラーコンポーネントがオープンソースになりました。急いでFORK、急いでSTAR!

以上が視力! Laravel 開発をスピードアップするキラーコンポーネントがオープンソースになりました。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。