Ce qui suit est un guide d'écriture suggéré par Laravel dans la colonne du didacticiel laravel. J'espère qu'il sera utile aux amis qui en ont besoin !
Laravel est un framework élégant qui fournit également de nombreuses méthodes d'écriture flexibles et magiques. Mais plus il est flexible, plus il peut y avoir des problèmes mineurs à certains égards.
Ce qui suit est une liste de méthodes d'écriture que Laravel ne recommande pas, à titre de discussion et de référence uniquement. Si possible, veuillez partager votre opinion dans la section commentaires.
Problème de requête
Les paramètres de requête peuvent être obtenus grâce à des attributs dynamiques, tels que l'écriture suivante :
$name = $request->name;
Cette méthode d'écriture n'est pas recommandée car si le nom de l'attribut S'il s'agit d'un attribut de la classe d'origine tel qu'une requête ou un contenu, des effets inattendus se produiront. A moins de mémoriser tous les mots-clés de ce type (même si vous vous souvenez de tous les attributs, vous ne pouvez pas garantir si de nouveaux attributs seront ajoutés dans la prochaine version), sinon vous rencontrerez ce gouffre tôt ou tard. Il n'est pas recommandé de l'utiliser. Il est recommandé d'utiliser la méthode suivante :
// 可以用这种方式 $name = $request->input('name'); // 或用这种方式 $input = $request->all(); $name = $input['name'];
Résumé : Ne pas utiliser l'attribut dynamique de requête.
Le modèle ajoute
class User extends Model { protected $appends = ['is_adult']; public function getIsAdultAttribute() { return $this->attribute['age'] > 18; } }
getXxxAttribute est une fonctionnalité très utile, mais si l'ajout est automatiquement appliqué dans le modèle, cela entraînera de nombreux problèmes, par exemple lorsque vous sélectionnez , il n'y a pas de champ d'âge, mais le champ d'ajout sera quand même ajouté pour vous, ce qui pose parfois beaucoup de problèmes. Il est recommandé de ne pas utiliser l'attribut $append. Chargez cette propriété au niveau de la couche contrôleur si nécessaire.
// model class User extends Model { public function getIsAdultAttribute() { return $this->attribute['age'] > 18; } } // controller $user = User::first(); $user->append('is_adult');
Résumé : n'utilisez pas d'ajout de modèle.
Propriétés dynamiques du modèle
// 第1种写法 $user = User::first(); // ?? 此动态属性如果是表字段名称是如 exists 等就会出问题。 $name = $user->name; // 第2种写法更安全 $user = User::first()->toArray(); $name = $user['name'];
Le modèle a également des propriétés dynamiques lors de l'utilisation d'objets, ce qui entraînera également des problèmes de conflit (généralement peu susceptibles d'être déclenchés), mais les mots-clés de la table de données ne doit pas apparaître sur le terrain autant que possible. (Bien que la deuxième façon d'écrire soit plus sûre, je pense que de plus en plus de gens préfèrent la première façon d'écrire. Nous pouvons simplement éviter les mots-clés suivants dans les champs de la base de données. J'aime aussi utiliser la première façon d'écrire.)
// /vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php exists, incrementing timestamps wasRecentlyCreated
Cet article sera mis à jour de temps en temps. J'espère que les personnes qui utilisent Laravel pourront partager vos suggestions d'utilisation.
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!