Découvrez les trésors cachés de Laravel
De nombreux développeurs utilisant Laravel n'ont peut-être fait qu'effleurer la surface de ce que le framework a à offrir. Bien que la documentation couvre les cas d'utilisation les plus courants et les fonctionnalités évidentes, elle ne couvre pas tout.
Ne vous méprenez pas, la documentation est excellente, c'est juste qu'il y a tellement de choses que vous pouvez faire qu'il est difficile de documenter tout. Nous allons donc jeter un œil à certains des joyaux cachés qui se cachent dans Laravel.
Vue en cascade
Heure disponible : v4.0.0
Enregistrement : Non
Les vues peuvent être mises en cascade comme des fichiers de configuration. Les vues en cascade sont très utiles lors du développement de systèmes de thèmes évolutifs. Considérez la structure de répertoires suivante.
1 2 3 4 5 6 7 8 9 10 |
|
L'idée est que lorsque nous return View::make('theme::blog.index');
时,它会首先在 themes/default/views
目录中查找,如果找不到的话找到视图,回退到 app/views
.
Pour ce faire, nous utilisons View::addNamespace
pour enregistrer notre propre espace de noms aux deux emplacements.
1 2 3 4 |
|
Collection
Heure disponible : v4.0.0
Enregistrement : Partie
Les collections sont un excellent moyen d'interagir avec et de gérer les tableaux. Les collections disposent de diverses méthodes pratiques et implémentent de nombreuses interfaces utiles, telles que ArrayableInterface
、IteratorAggregate
和 JsonableInterface
.
Supposons que nous construisions un petit moteur de blog qui utilise des fichiers plats pour le stockage. Nous voulons pouvoir effectuer des opérations telles que le tri, le filtrage et la pagination.
La mise en œuvre d'un moteur de blog dépasse le cadre de cet article, mais supposons que nous ayons une nouvelle instance du tableau $articles
,并且该数组的每个成员都是 Article
类的实例。然后我们需要做的就是获取 Collection
et que nous lui fournissions notre tableau de publications.
1 |
|
Trier
Grâce aux collections, nous pouvons trier les articles. Trions les articles et affichons d'abord les plus récemment mis à jour. Pour les besoins de cet article, nous supposons que lors du chargement d'un article depuis le système de fichiers, nous définissons l'attribut updatedAt
sur l'heure de la dernière modification du fichier.
1 2 3 |
|
sortBy
和 sortByDesc
accepte un rappel qui doit renvoyer une valeur pouvant être utilisée pour trier la collection. Dans notre cas, nous pouvons simplement renvoyer l'heure de la dernière modification de l'article, et la collection peut être triée en fonction de cette heure.
Filtre
Semblable au tri, nous pouvons également utiliser des collections pour filtrer nos articles, tout comme la clause WHERE
dans MySQL. Filtrons nos articles en fonction des recherches qui ont pu être effectuées.
1 2 3 4 5 6 7 |
|
filter
方法实际上返回 IlluminateSupportCollection
的新实例,因此我们需要将其分配给 $results
Variables. Cette nouvelle collection ne contiendra que des articles mentionnant "Laravel rock!"
Pagination
Grâce à cette collection, nous pouvons paginer les articles afin qu'il n'y ait pas trop d'articles sur une seule page.
1 2 3 4 5 6 7 8 9 10 11 |
|
Utilisez slice
方法,我们提取集合中的一部分文章并将其分配给 $results
variables.
Cet exemple peut être implémenté davantage en créant une nouvelle instance de la classe Paginator
de Laravel. De cette façon, il peut générer tous les numéros de page et liens pour vous.
Il y a encore plus à venir !
Nous pouvons obtenir un article au hasard :
1 |
|
Nous pouvons également parcourir notre collection d'articles comme s'il s'agissait d'un tableau régulier. Tout cela grâce à l'interface IteratorAggregate
和 ArrayIterator
.
1 2 3 |
|
Nous pouvons même convertir des articles en tableaux réguliers ou en leur représentation JSON.
1 2 |
|
L'une des méthodes les plus intéressantes est probablement groupBy
, qui nous permet de regrouper les articles par clés spécifiques. Imaginez que chaque article comporte des métadonnées en haut qui sont analysées et supprimées du corps de l'article.
Bien que l'analyse de ces métadonnées dépasse le cadre de cet article, nous supposons qu'elles sont analysées et constituent une propriété sur l'instance Article
. Vous pouvez ensuite utiliser Article
实例上的属性。然后,您可以使用 groupBy
pour regrouper vos articles par catégorie dans laquelle ils ont été publiés.
1 |
|
Tous les articles partageant la même catégorie seront regroupés. Ensuite, vous pouvez obtenir des articles dans une catégorie spécifique.
1 2 3 |
|
Les collections sont l'un des meilleurs joyaux cachés que Laravel a à offrir.
Filtre d'expression régulière
Heure disponible : v4.1.19
Enregistrement : Non
Le filtrage des itinéraires dans Laravel est une tâche courante que beaucoup d'entre nous effectuent dans tous nos projets. Les filtres vous permettent d'effectuer des tâches telles que l'authentification des utilisateurs ou la limitation du débit avant ou après le déclenchement d'un itinéraire. Nous utilisons Route::filter
创建过滤器,并可以将它们应用于单个路由、路由组,或者使用 Route::when
et l'appliquons au motif correspondant.
1 2 3 4 5 6 |
|
在此示例中,我们创建一个 restricted
过滤器,它需要一个参数 $group
。 $route
和 $request
参数始终提供给 before 过滤器。
但是如果我们想要更大的灵活性怎么办?假设我们想要将过滤器应用于所有 admin
路由除了 admin/login
。我们可以使用路线组并将相关路线移至组外。或者我们可以使用 Route::whenRegex
并编写我们自己的正则表达式。
1 |
|
此正则表达式只是确保它仅适用于以 admin
开头且后面不跟 /login
的路由,但后面可以跟任何其他内容。出色的。现在,我们将 restricted:admin
过滤器应用于除 admin/login
路由之外的所有路由。
消息包
可用时间: v4.0.0
记录:部分
毫无疑问,您已经使用 Illuminate\Support\MessageBag
一段时间了,甚至没有意识到。 MessageBag
扮演的最大角色是在使用 Laravel 内置验证器时包含所有验证错误。
每个视图中都有一个$errors
变量,该变量包含空的MessageBag
实例或使用Redirect::to('/')->withErrors($validator);
刷新到会话的实例
当在特定输入下方显示错误消息时,很多人可能会在表单中执行类似的操作。
1 2 3 4 |
|
您实际上可以完全删除 if
语句,并使用 first
方法的第二个参数将消息包装在 div
中。
1 2 |
|
好多了,好多了!
流利
可用时间: v3.0.0
记录:部分
Fluent
类已经存在很长时间了,当使用模式生成器创建迁移时,它实际上在框架本身内使用。 Laravel 3 和 Laravel 4 之间,类本身几乎没有变化,唯一大的区别是多了一些接口。
要使用 Fluent
类,您所需要做的就是获取一个实例,然后就可以了。
1 2 |
|
该实例现在定义了 3 个属性:name
,值为 Jason
、country
,值为 Australia
和 subscriber
,值为布尔值 true
。
在 Laravel 4.1 之前,您只能从实例中真正设置和获取属性。从 Laravel 4.1 开始,您可以使用 toArray
和 toJson
方法分别获取属性数组及其 JSON 表示形式。
从 Laravel 4.2 开始,该类还实现了 JsonSerialized
接口,这意味着您可以将实例直接传递到 json_encode
中。
还有更多!
我们已经研究了 Laravel 框架的几个有用的精华。但是,正如您所猜测的,框架内还有更多内容。
了解 Laravel 可能提供的其他功能的最佳方法是深入研究源代码。它并不像您想象的那么可怕,您将学到很多关于您正在构建的框架的知识。
如果您发现了其他宝石,请随时在评论中分享!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Alipay Php ...

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Le détournement de la session peut être réalisé via les étapes suivantes: 1. Obtenez l'ID de session, 2. Utilisez l'ID de session, 3. Gardez la session active. Les méthodes pour empêcher le détournement de la session en PHP incluent: 1. Utilisez la fonction Session_RegeReate_id () pour régénérer l'ID de session, 2. Stocker les données de session via la base de données, 3. Assurez-vous que toutes les données de session sont transmises via HTTPS.

L'application du principe solide dans le développement de PHP comprend: 1. Principe de responsabilité unique (SRP): Chaque classe n'est responsable d'une seule fonction. 2. Principe ouvert et ferme (OCP): les changements sont réalisés par extension plutôt que par modification. 3. Principe de substitution de Lisch (LSP): les sous-classes peuvent remplacer les classes de base sans affecter la précision du programme. 4. Principe d'isolement d'interface (ISP): utilisez des interfaces à grain fin pour éviter les dépendances et les méthodes inutilisées. 5. Principe d'inversion de dépendance (DIP): les modules élevés et de bas niveau reposent sur l'abstraction et sont mis en œuvre par injection de dépendance.

Comment déboguer le mode CLI dans phpstorm? Lors du développement avec PHPStorm, nous devons parfois déboguer PHP en mode interface de ligne de commande (CLI) ...

La fonction d'énumération dans PHP8.1 améliore la clarté et la sécurité du type du code en définissant les constantes nommées. 1) Les énumérations peuvent être des entiers, des chaînes ou des objets, améliorant la lisibilité du code et la sécurité des types. 2) L'énumération est basée sur la classe et prend en charge des fonctionnalités orientées objet telles que la traversée et la réflexion. 3) L'énumération peut être utilisée pour la comparaison et l'attribution pour assurer la sécurité du type. 4) L'énumération prend en charge l'ajout de méthodes pour implémenter une logique complexe. 5) La vérification stricte et la gestion des erreurs peuvent éviter les erreurs courantes. 6) L'énumération réduit la valeur magique et améliore la maintenabilité, mais prêtez attention à l'optimisation des performances.

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.
