検索
ホームページバックエンド開発PHPチュートリアルLaravel の隠された宝物を発見する

揭开 Laravel 隐藏的宝藏

Laravel を使用している多くの開発者は、フレームワークが提供する機能の表面をなぞっただけかもしれません。このドキュメントでは、最も一般的な使用例と明らかな機能がカバーされていますが、すべてをカバーしているわけではありません。

誤解しないでください。ドキュメントは素晴らしいものです。ただ、実行できることが非常に多く、すべてをドキュメント化するのは困難です。そこで、Laravel に潜む隠された宝石のいくつかを見ていきます。

カスケードビュー

利用可能時期: v4.0.0

記録:いいえ

ビューは構成ファイルのようにカスケードできます。カスケード ビューは、スケーラブルなテーマ システムを開発する場合に非常に役立ちます。次のディレクトリ構造を考えてみましょう。

リーリー

これは、

return View::make('theme::blog.index'); を実行すると、最初に themes/default/views ディレクトリに格納されるという考え方です。ビューが見つからない場合は、app/views にフォールバックします。

これを行うには、

View::addNamespace を使用して、両方の場所に独自の名前空間を登録します。 リーリー ###集める###

利用可能時期:

v4.0.0

レコード:

パート

コレクションは、配列を操作および管理するための優れた方法です。コレクションにはさまざまな便利なメソッドがあり、ArrayableInterface

IteratorAggregateJsonableInterface などの多くの便利なインターフェイスが実装されています。 ストレージにフラット ファイルを使用する小さなブログ エンジンを構築しているとします。並べ替え、フィルタリング、ページングなどの操作を実行できるようにしたいと考えています。

ブログ エンジンの実装はこの記事の範囲を超えていますが、配列

$articles

があり、配列の各メンバーが

Article クラスのインスタンスであると仮定します。次に、Collection の新しいインスタンスを取得し、それに記事の配列を与えるだけです。 リーリー ###選別### コレクションを使用して記事を並べ替えることができます。記事を並べ替えて、最近更新された記事を最初に表示してみましょう。この記事では、ファイル システムから記事を読み込むときに、updatedAt

属性をファイルの最終変更時刻に設定すると仮定します。

リーリー

sortBy メソッドと sortByDesc

メソッドは、コレクションの並べ替えに使用できる値を返すコールバックを受け取ります。私たちの場合、単に記事の最終更新時刻を返すだけで、その時刻に基づいてコレクションを並べ替えることができます。

###フィルター### ソートと同様に、MySQL の WHERE 句と同様に、コレクションを使用して記事をフィルタリングすることもできます。実行された可能性のある検索に基づいて記事をフィルタリングしましょう。 リーリー

filter

メソッドは実際には

Illuminate\Support\Collection の新しいインスタンスを返すため、それを $results

変数に割り当てる必要があります。この新しいコレクションには、「Laravel ロック!」について言及する記事のみが含まれます。

###ページング### このコレクションを使用すると、1 ページに記事が多すぎないように記事をページ分割できます。 リーリー slice メソッドを使用して、コレクション内の記事の一部を抽出し、それを $results

変数に割り当てます。

この例は、Laravel の

Paginator

クラスの新しいインスタンスを作成することでさらに実装できます。このようにして、すべてのページ番号とリンクを生成できます。

他にもあります! ランダムな記事を取得できます: リーリー

記事のコレクションを通常の配列であるかのように反復処理することもできます。これはすべて、

IteratorAggregate インターフェイスと ArrayIterator

インターフェイスのおかげです。

リーリー

記事を通常の配列またはその JSON 表現に変換することもできます。

リーリー

最も優れたメソッドの 1 つは、おそらく

groupBy です。これを使用すると、特定のキーで記事をグループ化できます。各記事の上部にメタデータがあり、それが解析されて記事本文から削除されると想像してください。 このメタデータの解析はこの記事の範囲を超えていますが、メタデータは解析され、Article

インスタンスのプロパティであると想定します。その後、

groupBy

を使用して、記事が公開されたカテゴリごとに記事をグループ化できます。

リーリー 同じカテゴリを共有するすべての記事がグループ化されます。その後、特定のカテゴリの記事を取得できます。 リーリー

コレクションは、Laravel が提供する最高の隠れた宝石の 1 つです。

正規表現フィルター 利用可能時期:

v4.1.19

記録:

いいえ

Laravel でのルートのフィルタリングは、私たちの多くがすべてのプロジェクトで実行する一般的なタスクです。フィルターを使用すると、ルートがトリガーされる前または後に、ユーザー認証やレート制限などのタスクを実行できます。

Route::filter を使用してフィルタを作成し、個々のルートやルート グループに適用したり、Route::when

を使用して一致するパターンに適用したりできます。

Route::filter('restricted', function($route, $request, $group)
{
    // Restrict user access based on the value of $group
});

Route::when('admin/*', 'restricted:admin');

在此示例中,我们创建一个 restricted 过滤器,它需要一个参数 $group$route$request 参数始终提供给 before 过滤器。

但是如果我们想要更大的灵活性怎么办?假设我们想要将过滤器应用于所有 admin 路由除了 admin/login。我们可以使用路线组并将相关路线移至组外。或者我们可以使用 Route::whenRegex 并编写我们自己的正则表达式。

Route::whenRegex('/^admin(\/(?!login)\S+)?$/', 'restricted:admin');

此正则表达式只是确保它仅适用于以 admin 开头且后面不跟 /login 的路由,但后面可以跟任何其他内容。出色的。现在,我们将 restricted:admin 过滤器应用于除 admin/login 路由之外的所有路由。

消息包

可用时间: v4.0.0

记录:部分

毫无疑问,您已经使用 Illuminate\Support\MessageBag 一段时间了,甚至没有意识到。 MessageBag 扮演的最大角色是在使用 Laravel 内置验证器时包含所有验证错误。

每个视图中都有一个 $errors 变量,该变量包含空的 MessageBag 实例或使用 Redirect::to('/')->withErrors($validator); 刷新到会话的实例

当在特定输入下方显示错误消息时,很多人可能会在表单中执行类似的操作。

{{ Form::text('username', null) }}
@if($errors->has('username'))
    <div class="error">{{ $errors->first('username') }}></div>;
@endif

您实际上可以完全删除 if 语句,并使用 first 方法的第二个参数将消息包装在 div 中。

    {{ Form::text('username', null) }}
    {{ $errors->first('username', '<div class="error">:message</div>') }}

好多了,好多了!

流利

可用时间: v3.0.0

记录:部分

Fluent 类已经存在很长时间了,当使用模式生成器创建迁移时,它实际上在框架本身内使用。 Laravel 3 和 Laravel 4 之间,类本身几乎没有变化,唯一大的区别是多了一些接口。

要使用 Fluent 类,您所需要做的就是获取一个实例,然后就可以了。

$user = new Illuminate\Support\Fluent;
$user->name('Jason')->country('Australia')->subscriber();

该实例现在定义了 3 个属性:name,值为 Jasoncountry,值为 Australiasubscriber,值为布尔值 true

在 Laravel 4.1 之前,您只能从实例中真正设置和获取属性。从 Laravel 4.1 开始,您可以使用 toArraytoJson 方法分别获取属性数组及其 JSON 表示形式。

从 Laravel 4.2 开始,该类还实现了 JsonSerialized 接口,这意味着您可以将实例直接传递到 json_encode 中。

还有更多!

我们已经研究了 Laravel 框架的几个有用的精华。但是,正如您所猜测的,框架内还有更多内容。

了解 Laravel 可能提供的其他功能的最佳方法是深入研究源代码。它并不像您想象的那么可怕,您将学到很多关于您正在构建的框架的知识。

如果您发现了其他宝石,请随时在评论中分享!

以上がLaravel の隠された宝物を発見するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP:多くのウェブサイトの基礎PHP:多くのウェブサイトの基礎Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール