Wie schreibe ich eleganten und langlebigen PHP-Code? Dieser Artikel führt Sie durch die grundlegenden Schreibspezifikationen und Framework-Spezifikationen von PHP-Code. Wenn Sie sie verstehen, wird Ihr PHP-Code eleganter!
Lao Wang hat mir heute erzählt, dass sein Code so schlecht ist, dass er wie ein Chaos ist. Fragen Sie mich, wie ich
die Qualität meines eigenen Codes verbessern und meinen Code optisch ansprechender und komfortabler gestalten kann, so wie
die Augen eines langbeinigen Mädchens leuchten.
Also ich: Du machst zuerst dies, dann dies und dann das. . . . . .
Klassenkamerad Lao Wang: Hör auf, Ärger zu machen, was zum Teufel ist da los?
Okay, ich fange mal an, so zu tun, als wäre ich 13. . .
Lassen Sie uns zunächst über die grundlegendsten Dinge sprechen:
Verwenden Sie die Groß-/Kleinschreibung für Variablennamen. Verwenden Sie Pinyin nicht für Wörter, die Sie nicht verstehen, sondern schlagen Sie im Wörterbuch nach, um das entsprechende Wort zu finden.
Verwenden Sie bei der Benennung von Konstanten Großbuchstaben. Beispiel: SYSTEM_EROOR = 50000
. 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
Das erwartete Ergebnis ist die Ausgabe: 2 4 6
, die tatsächliche Ergebnis ist 2 4 4
, warum
Schauen Sie sich meinen vorherigen Artikel an: Verstehen Sie das &-Symbol in PHP
wirklich?. Sie können die Methode
array_walk` verwenden, um dieses Problem zu vermeiden, Beispiel:
if
Verschachtelungen Beispiel Einfaches Beispiel: 🎜🎜🎜🎜🎜Es wird empfohlen, die zweite Methode zu verwenden, die direkt zurückkehrt, wenn sie die Bedingungen nicht erfüllt, und der Rest ist eine symbolische Bedingung, sodass Sie vermeiden, viel Code in das If zu schreiben. 🎜🎜🎜🎜Verwenden Sie den Schalter, um mehrere if/else
zu ersetzen. Die PHP8.0-Version kann match
verwenden, um prägnanter zu sein. 🎜🎜🎜🎜Installieren Sie das SonarLint
-Plugin in phpstorm
. Wenn der von Ihnen geschriebene Code gepunktete Linien enthält, bedeutet dies, dass er nicht ideal ist. Sie können ihn meiner Meinung nach entsprechend den Anweisungen ändern, und der Code wird mit der Zeit sehr standardisiert . Zum Beispiel: 🎜🎜🎜🎜🎜🎜Die Methode wird nicht verwendet. Ich habe Ihnen gesagt, dass der Methodenname nicht standardisiert ist. Sie können ihn schnell ändern oder selbst ändern. 🎜thinkphp
丶laravel
丶yii
verwendet haben. 🎜🎜🎜🎜Diese Frameworks basieren alle auf der MVC-Architektur und das Schreiben im Modell ist relativ besser als das Schreiben im Controller. Tatsächlich ist es für Großprojekte nicht sehr freundlich. 🎜🎜🎜🎜Im Folgenden wird das Laravel-Framework als Beispiel verwendet. 🎜🎜🎜🎜🎜Parameterüberprüfung🎜🎜🎜🎜🎜API erfordert Parameterüberprüfung, aber wo lässt sich die Parameterüberprüfung am elegantesten schreiben? Viele Leute definieren möglicherweise Regeln im Controller und rufen dann die Verifizierungsmethode auf. Dann erscheint der Verifizierungscode in jeder API, wie zum Beispiel das, was mein Kollege geschrieben hat. 🎜🎜🎜🎜🎜🎜🎜🎜🎜Dieser Code erscheint einmal in jeder API. Wie kann man das Problem lösen? 🎜🎜🎜🎜🎜🎜Requsts
-Verzeichnis im http-Verzeichnis von Laravel, um die angeforderte Parameterüberprüfungsklasse zu speichern. Erstellen Sie eine BaseRequest
-Klasse: Requsts
目录,用于存放请求的参数验证类。建立一个BaseRequest
类:比如登录需要参数验证再建立一个LoginRequest
类继承这个BaseRequest
。
这里获取请求参数的时候会对表单进行验证,否则参数验证失败会调用刚刚Request积累定义的方法抛Json异常,返回信息给客户端。
控制器的主要工作负载获取请求数据和返回内容,不应做更多的事情,那么可以定义一个Service层来处理业务逻辑。 所以我的控制器的代码只有一行。
然后建立一个UserService来处理用户相关的业务逻辑。
在UserController中注入这个UserService使用:
Model不建议写业务逻辑。Model主要是用来定义一些内容,不应该操纵数据。
Model的数据操纵应该放在Repository中,在Laravel的app目录下建立一个文件夹Repositories
Zum Beispiel erfordert die Anmeldung eine Parameterüberprüfung und erstellt dann eine LoginRequest
-Klasse, um diese BaseRequest
zu erben.
Wenn Sie es verwenden, fügen Sie diese Anforderungsklasse einfach in die Controller-Methode ein.
Controller
Die Hauptarbeitslast des Controllers besteht darin, die Anforderungsdaten abzurufen und Inhalte zurückzugeben. Sollte er nicht mehr tun, können Sie eine zu verarbeitende Serviceschicht definieren die Geschäftslogik. Mein Controller hat also nur eine Codezeile.at Fügen Sie diesen UserService in UserController ein und verwenden Sie:
Model
Model wird nicht zum Schreiben von Geschäftslogik empfohlen. Das Modell wird hauptsächlich zum Definieren einiger Inhalte verwendet und sollte keine Daten manipulieren. Die Datenmanipulation des Modells sollte im Repository abgelegt werden und im Laravel-App-Verzeichnis einen Ordner Repositories
erstellen.
Das obige ist der detaillierte Inhalt vonWie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!