国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
Laravel 5.3アプリケーションを使用して例を構(gòu)築し、フラクタルパッケージを統(tǒng)合します。そのため、インストーラーを使用するか、Composerを介して新しいLaravelアプリケーションを作成します。
データベースには、ユーザーと役割テーブルが含まれています。各ユーザーには役割があり、各役割には許可リストがあります。
各モデルのトランスを作成します。ユーザートランスフォーマーのクラスは次のようになります:
コントローラーは、データをユーザーに送信する前にデータを変換する必要があります。ここで、UsersControllerクラスを処理し、インデックスと表示操作のみを一時(shí)的に定義します。
ページネーション
サブリソース
緊急読み込み
プロジェクトにPHP Fractalの実裝では、Fractal LibraryをComposerからインストールし、データ用のトランスを作成し、Fractalクラスを使用してトランスを使用してデータを変換することが含まれます。その後、Fractalのシリアイザーの1つを使用して、変換されたデータを出力できます。
はい、PHP Fractalは、あらゆるPHPプロジェクトで使用できるスタンドアロンライブラリです。特定のフレームワークやプラットフォームに依存していないため、PHP開発者にとって普遍的なツールになります。
PHP Fractalを使用すると、多くの利點(diǎn)があります。 APIの出力が一貫性があり、十分に構(gòu)造化されていることを保証し、開発者が使用しやすくなります。また、複雑なデータ構(gòu)造を変換する標(biāo)準(zhǔn)化された方法を提供し、エラーの可能性を減らし、コードを維持しやすくすることができます。
PHP Fractalは他のデータ変換ツールとどのように比較されますか?
PHP Fractalの出力をカスタマイズできますか?
PHP Fractalの詳細(xì)はどこで學(xué)ぶことができますか?
ホームページ バックエンド開発 PHPチュートリアル PHP Fractal -API' s jsonをかなり常に作りましょう!

PHP Fractal -API' s jsonをかなり常に作りましょう!

Feb 10, 2025 am 09:01 AM

PHP Fractal - Make Your API's JSON Pretty, Always!

この記事は、Viraj Khatavkarによって査読されました。 SetePointコンテンツを最高に獲得してくれたSetePointのすべてのピアレビューアに感謝します!

以前にAPIを構(gòu)築したことがある場合、データを直接応答として出力することに慣れていると思います。これは正しく行われた場合に有害ではないかもしれませんが、この問題を解決するのに役立ついくつかの実用的な選択肢があります。

利用可能なソリューションの1つはフラクタルです。これにより、モデルを応答として返す前に、モデルの新しい変換レイヤーを作成できます。非常に柔軟で、あらゆるアプリケーションやフレームワークに簡単に統(tǒng)合できます。

PHP Fractal - Make Your API's JSON Pretty, Always! キーポイント

PHP Fractalは、開発者がモデルの新しい変換層を作成してから応答として返すことができるソリューションであり、JSONデータを管理し、一貫性を整えることができます。
  • Fractalは柔軟で、あらゆるアプリケーションまたはフレームワークに統(tǒng)合しやすいです。 Transformerを使用して複雑なデータ構(gòu)造をより単純な形式に変換し、Serializerを使用して最終出力をフォーマットすることで機(jī)能します。
  • Fractalは、ユーザーが要求したときに応答にサブリソース(関係)を含めることを可能にし、データレンダリングに柔軟性と制御の別の層を追加します。
  • Fractalを使用すると、関係を一度にロードすることでクエリパフォーマンスを最適化することができ、雄弁なロードが頻繁に遭遇するN 1の問題を解決します。
  • インストール

Laravel 5.3アプリケーションを使用して例を構(gòu)築し、フラクタルパッケージを統(tǒng)合します。そのため、インストーラーを使用するか、Composerを介して新しいLaravelアプリケーションを作成します。

または
<code>laravel new demo</code>

次に、フォルダー內(nèi)でフラクタルパッケージが必要です。
<code>composer create-project laravel/laravel demo</code>

データベースを作成します
<code>composer require league/fractal</code>

データベースには、ユーザーと役割テーブルが含まれています。各ユーザーには役割があり、各役割には許可リストがあります。

// app/User.php

class User extends Authenticatable
{
    protected $fillable = [
        'name',
        'email',
        'password',
        'role_id',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function role()
    {
        return $this->belongsTo(Role::class);
    }
}
トランスを作成
// app/Role.php

class Role extends Model
{
    protected $fillable = [
        'name',
        'slug',
        'permissions'
    ];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function users()
    {
        return $this->hasMany(User::class);
    }
}

各モデルのトランスを作成します。ユーザートランスフォーマーのクラスは次のようになります:

はい、変圧器を作成するのは簡単です!開発者が管理できる方法でデータを変換するだけでなく、ORMやリポジトリに任せません。
// app/Transformers/UserTransformer.php

namespace App\Transformers;

use App\User;
use League\Fractal\TransformerAbstract;

class UserTransformer extends TransformerAbstract
{
    public function transform(User $user)
    {
        return [
            'name' => $user->name,
            'email' => $user->email
        ];
    }
}

TransformerAbstractクラスを拡張し、Transformメソッドを定義します。これは、ユーザーインスタンスを使用して呼び出されます。 Roletransformerクラスにも同じことが言えます。

コントローラーを作成します
namespace App\Transformers;

use App\Role;
use League\Fractal\TransformerAbstract;

class RoleTransformer extends TransformerAbstract
{
    public function transform(Role $role)
    {
        return [
            'name' => $role->name,
            'slug' => $role->slug,
            'permissions' => $role->permissions
        ];
    }
}

コントローラーは、データをユーザーに送信する前にデータを変換する必要があります。ここで、UsersControllerクラスを処理し、インデックスと表示操作のみを一時(shí)的に定義します。

インデックス操作は、データベースからすべてのユーザーをクエリし、ユーザーリストとコンバーターを使用してリソースのコレクションを作成し、実際の変換プロセスを?qū)g行します。

// app/Http/Controllers/UsersController.php

class UsersController extends Controller
{
    /**
     * @var Manager
     */
    private $fractal;

    /**
     * @var UserTransformer
     */
    private $userTransformer;

    function __construct(Manager $fractal, UserTransformer $userTransformer)
    {
        $this->fractal = $fractal;
        $this->userTransformer = $userTransformer;
    }

    public function index(Request $request)
    {
        $users = User::all(); // 從數(shù)據(jù)庫獲取用戶
        $users = new Collection($users, $this->userTransformer); // 創(chuàng)建資源集合轉(zhuǎn)換器
        $users = $this->fractal->createData($users); // 轉(zhuǎn)換數(shù)據(jù)

        return $users->toArray(); // 獲取轉(zhuǎn)換后的數(shù)據(jù)數(shù)組
    }
}
もちろん、すべてのユーザーを一度に返すことは意味がありません。このためにポケットベルを?qū)g裝する必要があります。

ページネーション

laravelは物事を単純化する傾向があります。このようなページネーションを?qū)g裝することができます:

<code>laravel new demo</code>

しかし、これがフラクタルで動(dòng)作するためには、データを変換してポケットベルを呼び出すためにコードを追加する必要がある場合があります。

<code>composer create-project laravel/laravel demo</code>

最初のステップは、モデルからのデータをページングすることです。次に、以前のようにリソースコレクションを作成し、コレクションにポケットベルをセットアップします。

Fractalは、symfonyとZend用のアダプターも提供する長さのAwarepaginatorクラスを変換するために、PaginatorアダプターをLaravelに提供します。

<code>composer require league/fractal</code>

ページングの詳細(xì)に追加のフィールドを追加することに注意してください。ドキュメントでページングの詳細(xì)を読むことができます。

サブリソース

を含む

フラクタルに精通しているので、ユーザーがリクエストしたときにサブリソース(関係)を応答に含める方法を?qū)Wぶ時(shí)が來ました。

http://demo.vaprobash.dev/users?clude=roleなど、応答に追加のリソースを含めることをリクエストできます。コンバーターは、要求されている內(nèi)容を自動(dòng)的に検出し、インクルードパラメーターを解析できます。

// app/User.php

class User extends Authenticatable
{
    protected $fillable = [
        'name',
        'email',
        'password',
        'role_id',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
     */
    public function role()
    {
        return $this->belongsTo(Role::class);
    }
}

$ includesプロパティは、コンバーターに、応答に追加のデータを含める必要があることを伝えます。 include queryパラメーターがユーザーの役割を要求する場合、includeroleメソッドを呼び出します。

// app/Role.php

class Role extends Model
{
    protected $fillable = [
        'name',
        'slug',
        'permissions'
    ];

    /**
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function users()
    {
        return $this->hasMany(User::class);
    }
}

$ this-&gt; fractal-&gt; parseincludesラインは、含まれるクエリパラメーターを解析する責(zé)任があります。ユーザーのリストをリクエストした場合、次のようなものを見る必要があります:

// app/Transformers/UserTransformer.php

namespace App\Transformers;

use App\User;
use League\Fractal\TransformerAbstract;

class UserTransformer extends TransformerAbstract
{
    public function transform(User $user)
    {
        return [
            'name' => $user->name,
            'email' => $user->email
        ];
    }
}

各ユーザーにロールリストがある場合、コンバーターを次のようなものに変更できます。

namespace App\Transformers;

use App\Role;
use League\Fractal\TransformerAbstract;

class RoleTransformer extends TransformerAbstract
{
    public function transform(Role $role)
    {
        return [
            'name' => $role->name,
            'slug' => $role->slug,
            'permissions' => $role->permissions
        ];
    }
}
にサブリソースが含まれている場合、

ポイント表記を使用して関係をネストできます。各役割に別のテーブルに保存されている権限のリストがあると仮定し、ユーザーの役割と権限を持つユーザーをリストしたいと考えています。含めることができます= role.permissions。 時(shí)々、アドレスアソシエーションなど、デフォルトで必要なアソシエーションをデフォルトで含める必要があります。これを行うには、コンバーター內(nèi)の$ defaultIncludesプロパティを使用できます。

フラクタルパッケージに関する私のお?dú)荬巳毪辘?つは、パラメーターをパラメーターに渡すことができることです。ドキュメントの良い例は、順番に並べ替えることです。次のように例に適用できます:
// app/Http/Controllers/UsersController.php

class UsersController extends Controller
{
    /**
     * @var Manager
     */
    private $fractal;

    /**
     * @var UserTransformer
     */
    private $userTransformer;

    function __construct(Manager $fractal, UserTransformer $userTransformer)
    {
        $this->fractal = $fractal;
        $this->userTransformer = $userTransformer;
    }

    public function index(Request $request)
    {
        $users = User::all(); // 從數(shù)據(jù)庫獲取用戶
        $users = new Collection($users, $this->userTransformer); // 創(chuàng)建資源集合轉(zhuǎn)換器
        $users = $this->fractal->createData($users); // 轉(zhuǎn)換數(shù)據(jù)

        return $users->toArray(); // 獲取轉(zhuǎn)換后的數(shù)據(jù)數(shù)組
    }
}

ここで重要な部分はリスト($ ordercol、$ orderby)= $ parambag-&gt; get( 'order')?:['created_at'、 'desc'];ユーザーは、クエリビルダーに含めて適用します。
{
  "data": [
    {
      "name": "Nyasia Keeling",
      "email": "crooks.maurice@example.net"
    },
    {
      "name": "Laron Olson",
      "email": "helen55@example.com"
    },
    {
      "name": "Prof. Fanny Dach III",
      "email": "edgardo13@example.net"
    },
    {
      "name": "Athena Olson Sr.",
      "email": "halvorson.jules@example.com"
    }
    // ...
  ]
}

パラメーター(/leoles?include = users:order(name | asc))を渡すことにより、含まれるユーザーリストを順に並べ替えることができます。ドキュメントにリソースを含めることの詳細(xì)を読むことができます。

しかし、ユーザーが関連する役割を持っていない場合はどうなりますか? NULLの代わりに有効なデータが予想されるため、停止し、エラーが表示されます。 null値を表示する代わりに、関係を応答から削除しましょう。

<code>laravel new demo</code>

緊急読み込み

雄弁はモデルにアクセスするときにモデルの読み込みを遅らせるため、n 1 問題に遭遇する可能性があります。これは、クエリを最適化するために、1回限りの熱心なロード関係によって解決できます。

<code>composer create-project laravel/laravel demo</code>
この方法では、モデル関係にアクセスする際に追加のクエリはありません。

結(jié)論

私はフィル?スタージョンの「あなたが嫌い??なAPIの構(gòu)築」を読んでいる間にフラクタルにつまずいた。

APIを構(gòu)築するときにコンバーターを使用しましたか?同じ作業(yè)を行う優(yōu)先パッケージはありますか、それともjson_encodeを使用しているだけですか?以下のコメントセクションでお知らせください!

PHP Fractal FAQ

PHPフラクタルとは何ですか?なぜそれが重要なのですか?

PHP Fractalは、APIのデータをレンダリングおよび変換するのに役立つ強(qiáng)力なツールです。それは、APIのデータ出力が一貫性があり、十分に構(gòu)造化され、理解しやすいことを保証する、複雑でネストされたデータ構(gòu)造を出力する標(biāo)準(zhǔn)化された方法を提供するため、重要です。これにより、開発者はAPIを使用しやすくなり、エラーの可能性が低下します。

PHPフラクタルはどのように機(jī)能しますか?

PHP Fractalは、複雑なデータ構(gòu)造を取得し、それらを使いやすい形式に変換することにより機(jī)能します。 TransformerとSerializerの2つの主要なコンポーネントを介して実裝されています。 Transformerは、複雑なデータをより単純な形式に変換する責(zé)任を負(fù)い、シリアナーは最終出力を形成します。

PHP Fractalの変圧器とは何ですか?

PHP Fractalのトランスは、API応答でアプリケーションデータを出力する方法を定義するクラスです。複雑なデータ構(gòu)造を取り、それらをよりシンプルで使いやすい形式に変換します。これにより、API応答に含まれているデータと構(gòu)造化方法を正確に制御できます。

PHP FractalのSerializerとは何ですか?

PHP Fractalのシリアナーは、APIの最終出力のフォーマットを擔(dān)當(dāng)します。トランスによって変換されたデータを取得し、特定の構(gòu)造にフォーマットします。これにより、APIの出力が一貫して理解しやすいことを確認(rèn)できます。

プロジェクトにPHP Fractalを?qū)g裝するにはどうすればよいですか?

プロジェクトにPHP Fractalの実裝では、Fractal LibraryをComposerからインストールし、データ用のトランスを作成し、Fractalクラスを使用してトランスを使用してデータを変換することが含まれます。その後、Fractalのシリアイザーの1つを使用して、変換されたデータを出力できます。

PHPプロジェクトでPHP Fractalを使用できますか?

はい、PHP Fractalは、あらゆるPHPプロジェクトで使用できるスタンドアロンライブラリです。特定のフレームワークやプラットフォームに依存していないため、PHP開発者にとって普遍的なツールになります。

PHP Fractalを使用することの利點(diǎn)は何ですか?

PHP Fractalを使用すると、多くの利點(diǎn)があります。 APIの出力が一貫性があり、十分に構(gòu)造化されていることを保証し、開発者が使用しやすくなります。また、複雑なデータ構(gòu)造を変換する標(biāo)準(zhǔn)化された方法を提供し、エラーの可能性を減らし、コードを維持しやすくすることができます。

PHP Fractalは他のデータ変換ツールとどのように比較されますか?

PHP Fractalは、そのシンプルさと柔軟性で際立っています。複雑なデータ構(gòu)造を変換するための簡単な方法を提供し、トランスとシリアイザーを使用して高いカスタマイズを可能にします。これにより、APIを使用する開発者にとって強(qiáng)力なツールになります。

PHP Fractalの出力をカスタマイズできますか?

はい、PHP Fractalは高度にカスタマイズ可能です。カスタムトランスを作成して、データの変換方法を正確に制御でき、さまざまなシリアル化器を使用して異なる方法で出力をフォーマットできます。これにより、APIの出力を特定のニーズに合わせて調(diào)整できます。

PHP Fractalの詳細(xì)はどこで學(xué)ぶことができますか?

PHP Fractalの詳細(xì)を?qū)Wぶのに役立つ多くのリソースがあります。公式PHPリーグのウェブサイトは包括的なドキュメントを提供しており、オンラインで多くのチュートリアルやブログ投稿があります。さらに、PHP Fractal Githubリポジトリは、コードを探索し、その使用方法の例を見るのに最適な場所です。

以上がPHP Fractal -API&#x27; s jsonをかなり常に作りましょう!の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPに認(rèn)証と承認(rèn)を?qū)g裝するにはどうすればよいですか? PHPに認(rèn)証と承認(rèn)を?qū)g裝するにはどうすればよいですか? Jun 20, 2025 am 01:03 AM

tosecurelyhandLeauthenticationAndauthorizationInizationInization、followTheSteps:1.LwayShashPasswordswithPassword_hash()andverifyusingpassword_verify()、usepreparedStatementStatementStatementStatementStatementStain、andstoreUserdatain $ _SessionAfterlogin.2.implementRementRementRementRementRementRementRementRole

PHPでファイルアップロードを安全に処理するにはどうすればよいですか? PHPでファイルアップロードを安全に処理するにはどうすればよいですか? Jun 19, 2025 am 01:05 AM

PHPでファイルアップロードを安全に処理するために、コアはファイルタイプを確認(rèn)し、ファイルの名前を変更し、権限を制限することです。 1。Finfo_File()を使用して実際のMIMEタイプを確認(rèn)し、Image/JPEGなどの特定のタイプのみが許可されます。 2。uniqid()を使用してランダムファイル名を生成し、非webルートディレクトリに保存します。 3. PHP.iniおよびHTMLフォームを介してファイルサイズを制限し、ディレクトリ権限を0755に設(shè)定します。 4. Clamavを使用してマルウェアをスキャンしてセキュリティを強(qiáng)化します。これらの手順は、セキュリティの脆弱性を効果的に防止し、ファイルのアップロードプロセスが安全で信頼性が高いことを確認(rèn)します。

PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? PHPの==(ゆるい比較)と===(厳密な比較)の違いは何ですか? Jun 19, 2025 am 01:07 AM

PHPでは、==と==の主な違いは、タイプチェックの厳格さです。 ==タイプ変換は比較の前に実行されます。たとえば、5 == "5"はtrueを返します。===リクエストは、trueが返される前に値とタイプが同じであることを要求します。たとえば、5 === "5"はfalseを返します。使用シナリオでは、===はより安全で、最初に使用する必要があります。==は、タイプ変換が必要な場合にのみ使用されます。

PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? PHP(、 - 、 *、 /、%)で算術(shù)操作を?qū)g行するにはどうすればよいですか? Jun 19, 2025 pm 05:13 PM

PHPで基本的な數(shù)學(xué)操作を使用する方法は次のとおりです。1。追加標(biāo)識は、整數(shù)と浮動(dòng)小數(shù)點(diǎn)數(shù)をサポートし、変數(shù)にも使用できます。文字列番號は自動(dòng)的に変換されますが、依存関係には推奨されません。 2。減算標(biāo)識の使用 - 標(biāo)識、変數(shù)は同じであり、タイプ変換も適用されます。 3.乗算サインは、數(shù)字や類似の文字列に適した標(biāo)識を使用します。 4.分割はゼロで割らないようにする必要がある分割 /標(biāo)識を使用し、結(jié)果は浮動(dòng)小數(shù)點(diǎn)數(shù)である可能性があることに注意してください。 5.モジュラス標(biāo)識を採取することは、奇妙な數(shù)と偶數(shù)を判斷するために使用でき、負(fù)の數(shù)を処理する場合、殘りの兆候は配當(dāng)と一致しています。これらの演算子を正しく使用するための鍵は、データ型が明確であり、境界の狀況がうまく処理されるようにすることです。

PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? PHPのNOSQLデータベース(Mongodb、Redisなど)とどのように対話できますか? Jun 19, 2025 am 01:07 AM

はい、PHPは、特定の拡張機(jī)能またはライブラリを使用して、MongoDBやRedisなどのNOSQLデータベースと対話できます。まず、MongoDBPHPドライバー(PECLまたはComposerを介してインストール)を使用して、クライアントインスタンスを作成し、データベースとコレクションを操作し、挿入、クエリ、集約、その他の操作をサポートします。第二に、PredisライブラリまたはPhpredis拡張機(jī)能を使用してRedisに接続し、キー価値設(shè)定と取得を?qū)g行し、高性能シナリオにPhpredisを推奨しますが、Predisは迅速な展開に便利です。どちらも生産環(huán)境に適しており、十分に文書化されています。

最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? 最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? Jun 23, 2025 am 12:56 AM

postaycurrentwithpdevellyments andbest practices、follow keynewsourceslikephp.netandphpweekly、egagewithcommunitiessonforums andconferences、keeptooling and gradivallyadoptnewfeatures、andreadorcontributeTopensourceprijeprijeprijeptrijeprijeprests.

PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebdevelopmentduetoitseaseaseaseaseasease、SeamlessintegrationWithhtml、widespreadhostingsupport、andalargeecosystemincludingframeworkelavelandcmsplatformslikewordspresspressinsinsionsisionsisionsisionsisionsionsionsisionsionsionsisionsisions

PHPタイムゾーンを設(shè)定する方法は? PHPタイムゾーンを設(shè)定する方法は? Jun 25, 2025 am 01:00 AM

tosettherighttimezoneInphp、usedate_default_timezone_set()functionthestthestofyourscriptwithavalididentifiersiersuchas'america/new_york'.1.usedate_default_timezone_set()beforeanydate/timefunctions.2.2.Altertentally、confuturethephp.inifilebyset.

See all articles