Comment écrire du code PHP élégant et durable ? Cet article vous présentera les spécifications d'écriture de base et les spécifications du framework du code PHP. Les comprendre rendra votre code PHP plus élégant !
Lao Wang m'a dit aujourd'hui que son code est si mauvais que c'est comme un gâchis. Demandez-moi comment
améliorer la qualité de mon code et rendre mon code plus agréable à regarder et plus confortable, tout comme la façon
vos yeux s'illuminent lorsque vous voyez une fille aux longues jambes.
Alors moi : Vous faites ceci d'abord, puis ceci, et puis cela. . . . . .
Camarade de classe Lao Wang : Arrêtez de créer des ennuis, que se passe-t-il ?
D'accord, je vais commencer à faire semblant d'avoir 13 ans. . .
Parlons d'abord des choses les plus élémentaires :
Utilisez la dénomination en casse chameau pour les noms de variables. N'utilisez pas le pinyin pour les mots que vous ne comprenez pas, recherchez plutôt dans le dictionnaire le mot correspondant.
Utilisez des traits de soulignement majuscules lorsque vous nommez des constantes. Par exemple : SYSTEM_EROOR = 50 000
. SYSTEM_EROOR = 50000
。
缩进使用Tab键,不要打一堆空格做缩进。
类名首字母大写驼峰命名,需要见名知其意,注释说明这个类的功能。例如:
预期结果是输出: 2 4 6
,实际结果是2 4 4
, 至于为什么可
以看我之前的文章: PHP中
&符号你真的了解吗?。 可以使用
array_walk`方法避免这个问题, 示例:
if
, elese
嵌套过深,很多嵌套可以通过提前终止来消除, 举个简单的例子:建议使用第二种方式,不符合条件的直接返回,剩下的就是符号条件的,那么避免了在if里面写很多代码。
多个if/else
使用switch来替代,PHP8.0版本可以使用match
更为简洁。
phpstorm
中安装SonarLint
插件。如果你写的代码出现虚线,说明不太理想,那么可以根据提示修改,相信有强迫症的同学一定会改,久而久之代码就很规范了。例如:
方法未使用,方法名不规范已经告诉你了,可以快捷修改,也可以自己修改。
前面说得都是比较基础的东西,接下来才是主要的内容。
相信很多同学都用过常用的thinkphp
丶laravel
丶yii
Le résultat attendu est la sortie : 2 4 6
, le résultat réel le résultat est 2 4 4
, expliquant pourquoi
Jetez un oeil à mon article précédent : Comprenez-vous vraiment le symbole & en PHP
?. Vous pouvez utiliser la méthode
array_walk` pour éviter ce problème, exemple :
if
, elese
trop profondément. De nombreuses imbrications peuvent être éliminées par une résiliation anticipée. exemple Exemple simple : 🎜🎜🎜🎜🎜Il est recommandé d'utiliser la deuxième méthode, qui renvoie directement si elle ne remplit pas les conditions, et le reste est une condition symbolique, vous évitez donc d'écrire beaucoup de code dans le if. 🎜🎜🎜🎜Utilisez switch pour remplacer plusieurs if/else
. La version PHP8.0 peut utiliser match
pour être plus concise. 🎜🎜🎜🎜Installez le plugin SonarLint
dans phpstorm
. S'il y a des lignes pointillées dans le code que vous écrivez, cela signifie qu'il n'est pas idéal, alors vous pouvez le modifier en fonction des invites. Je pense que les étudiants souffrant de trouble obsessionnel-compulsif le changeront certainement et qu'avec le temps, le code deviendra très standardisé. . Par exemple : 🎜🎜🎜🎜🎜🎜La méthode n'est pas utilisée. Je vous ai dit que le nom de la méthode n'est pas standardisé. Vous pouvez le modifier rapidement ou le modifier vous-même. 🎜thinkphp
丶laravel
丶yii
. 🎜🎜🎜🎜Ces frameworks sont tous basés sur l'architecture MVC. J'ai vu les codes de nombreuses personnes et écrire une logique métier dans le contrôleur ou dans le modèle est relativement mieux que d'écrire dans le contrôleur. En fait, ce n’est pas très favorable aux projets à grande échelle. 🎜🎜🎜🎜Ce qui suit utilise le framework Laravel comme exemple. 🎜🎜🎜🎜🎜Vérification des paramètres🎜🎜🎜🎜🎜L'API nécessite une vérification des paramètres, mais où est la manière la plus élégante d'écrire la vérification des paramètres ? De nombreuses personnes peuvent définir des règles dans le contrôleur, puis appeler la méthode de vérification. Ensuite, le code de vérification apparaîtra dans chaque API, comme ce que mon collègue a écrit. 🎜🎜🎜🎜🎜🎜🎜🎜🎜Ce code apparaîtra une fois dans chaque API N'est-il pas très verbeux Alors comment le résoudre ? 🎜🎜🎜🎜🎜🎜Requsts
dans le répertoire http de Laravel pour stocker la classe de vérification des paramètres demandée. Créez une classe BaseRequest
: Requsts
目录,用于存放请求的参数验证类。建立一个BaseRequest
类:比如登录需要参数验证再建立一个LoginRequest
类继承这个BaseRequest
。
这里获取请求参数的时候会对表单进行验证,否则参数验证失败会调用刚刚Request积累定义的方法抛Json异常,返回信息给客户端。
控制器的主要工作负载获取请求数据和返回内容,不应做更多的事情,那么可以定义一个Service层来处理业务逻辑。 所以我的控制器的代码只有一行。
然后建立一个UserService来处理用户相关的业务逻辑。
在UserController中注入这个UserService使用:
Model不建议写业务逻辑。Model主要是用来定义一些内容,不应该操纵数据。
Model的数据操纵应该放在Repository中,在Laravel的app目录下建立一个文件夹Repositories
Par exemple, la connexion nécessite une vérification des paramètres, puis crée une classe LoginRequest
pour hériter de cette BaseRequest
.
Lorsque vous l'utilisez, injectez simplement cette classe de requête dans la méthode Controller.
Contrôleur
La charge de travail principale du contrôleur est d'obtenir les données de la demande et de renvoyer le contenu. Il ne devrait pas faire plus de choses, vous pouvez alors définir une couche de service à gérer. la logique métier. Mon contrôleur n'a donc qu'une seule ligne de code.à Injectez ce UserService dans UserController et utilisez :
Model
Le modèle n'est pas recommandé pour écrire une logique métier. Le modèle est principalement utilisé pour définir du contenu et ne doit pas manipuler les données. La manipulation des données du modèle doit être placée dans le référentiel et créer un dossier Repositories
dans le répertoire des applications de 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!