Maison > cadre php > Laravel > le corps du texte

Partager un guide pour rédiger des suggestions dans Laravel

藏色散人
Libérer: 2021-05-08 08:58:22
avant
1728 Les gens l'ont consulté

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;
Copier après la connexion

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'];
Copier après la connexion

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;
  }
}
Copier après la connexion

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');
Copier après la connexion

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'];
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal