Heim  >  Artikel  >  Backend-Entwicklung  >  Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

青灯夜游
青灯夜游nach vorne
2021-08-24 16:16:073656Durchsuche

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!

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Einführung

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. . .

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Grundlegende Spezifikationen

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键,不要打一堆空格做缩进。

  • 类名首字母大写驼峰命名,需要见名知其意,注释说明这个类的功能。例如:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

  • 方法名驼峰命名,方法行数尽量控制在80行左右,注释说明函数干嘛用的。

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

  • 花括号独占一行,例如:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

  • foreach慎用引用,例如以下代码会有问题:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

预期结果是输出: 2 4 6,实际结果是2 4 4, 至于为什么可 以看我之前的文章: PHP中&符号你真的了解吗?。 可以使用array_walk`方法避免这个问题, 示例:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

  • 避免if, elese嵌套过深,很多嵌套可以通过提前终止来消除, 举个简单的例子:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

建议使用第二种方式,不符合条件的直接返回,剩下的就是符号条件的,那么避免了在if里面写很多代码。

  • 多个if/else使用switch来替代,PHP8.0版本可以使用match更为简洁。

  • phpstorm中安装SonarLint插件。如果你写的代码出现虚线,说明不太理想,那么可以根据提示修改,相信有强迫症的同学一定会改,久而久之代码就很规范了。例如:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

方法未使用,方法名不规范已经告诉你了,可以快捷修改,也可以自己修改。

框架规范

  • 前面说得都是比较基础的东西,接下来才是主要的内容。

  • 相信很多同学都用过常用的thinkphplaravelyii

  • Verwenden Sie die Tabulatortaste zum Einrücken, geben Sie nicht viele Leerzeichen zum Einrücken ein.

  • Der erste Buchstabe des Klassennamens ist in Kamelschrift. Sie müssen die Bedeutung kennen, indem Sie den Namen sehen, der die Funktionen dieser Klasse erklärt. Zum Beispiel:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Methodennamen in Kamel-Schreibweise benennen. Versuchen Sie, die Anzahl der Methodenzeilen auf etwa 80 Zeilen zu beschränken.

  • Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

  • Die geschweiften Klammern nehmen jeweils eine Zeile ein, zum Beispiel:

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

  • foreach verwenden Sie Anführungszeichen mit Vorsicht. Beispielsweise wird der folgende Code Probleme haben:

  • Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

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: Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards🎜🎜🎜Vermeiden Sie zu tiefe if Verschachtelungen Beispiel Einfaches Beispiel: 🎜🎜🎜Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards🎜🎜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: 🎜🎜🎜🎜Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards🎜🎜Die Methode wird nicht verwendet. Ich habe Ihnen gesagt, dass der Methodenname nicht standardisiert ist. Sie können ihn schnell ändern oder selbst ändern. 🎜

🎜Rahmenspezifikation🎜🎜🎜🎜🎜Die oben genannten Dinge sind relativ einfach, und das nächste ist der Hauptinhalt. 🎜🎜🎜🎜Ich glaube, dass viele Studenten eines der beliebten Frameworks wie thinkphplaravelyii 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? 🎜🎜🎜🎜🎜🎜
  • Erstellen Sie ein Requsts-Verzeichnis im http-Verzeichnis von Laravel, um die angeforderte Parameterüberprüfungsklasse zu speichern. Erstellen Sie eine BaseRequest-Klasse: Requsts目录,用于存放请求的参数验证类。建立一个BaseRequest类:

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

比如登录需要参数验证再建立一个LoginRequest类继承这个BaseRequest

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

  • 使用的时候只要在Controller的方法中注入这个请求类即可。

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

这里获取请求参数的时候会对表单进行验证,否则参数验证失败会调用刚刚Request积累定义的方法抛Json异常,返回信息给客户端。

控制器

控制器的主要工作负载获取请求数据和返回内容,不应做更多的事情,那么可以定义一个Service层来处理业务逻辑。 所以我的控制器的代码只有一行。

  • 在Laravel的app目录下建立一个Services文件夹用于存放Service类,建立一个BaseService类:

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

然后建立一个UserService来处理用户相关的业务逻辑。

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

在UserController中注入这个UserService使用:

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Model

Model不建议写业务逻辑。Model主要是用来定义一些内容,不应该操纵数据。

Model的数据操纵应该放在Repository中,在Laravel的app目录下建立一个文件夹Repositories

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Zum Beispiel erfordert die Anmeldung eine Parameterüberprüfung und erstellt dann eine LoginRequest-Klasse, um diese BaseRequest zu erben. 1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

Wenn Sie es verwenden, fügen Sie diese Anforderungsklasse einfach in die Controller-Methode ein. 1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards Wenn die Anforderungsparameter hier abgerufen werden, wird das Formular überprüft. Andernfalls wird die gerade durch die Anforderungsakkumulation definierte Methode aufgerufen und eine Json-Ausnahme ausgelöst und die Informationen werden an den Client zurückgegeben.

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.

    Erstellen Sie einen Services-Ordner im App-Verzeichnis von Laravel, um die Service-Klasse zu speichern, und erstellen Sie eine BaseService-Klasse:
  • 1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards
Dann erstellen Sie einen UserService, um benutzerbezogene Geschäftslogik zu verarbeiten.

1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards1Wie schreibe ich eleganten und attraktiven PHP-Code? Eine kurze Diskussion über das Schreiben von Standards

at Fügen Sie diesen UserService in UserController ein und verwenden Sie:


16 .png

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.

🎜BaseRepository definieren:🎜🎜🎜🎜🎜UserRepository für benutzerdatenbezogene Vorgänge definieren, UserModel in die Konstruktionsmethode einfügen:🎜🎜🎜🎜🎜🎜Konstanten🎜🎜🎜Wie definiere ich viele Konstanten im Projekt? 🎜🎜Erstellen Sie ein Konstantenverzeichnis im App-Verzeichnis und erstellen Sie dann eine Konstantenklasse, um diese benutzerdefinierten Konstanten zu speichern. 🎜🎜Der Vorteil ist: 🎜🎜🎜Benutzerdefinierte Konstanten können zentral verwaltet werden. 🎜🎜Wenn Sie den konstanten Wert ändern, müssen Sie die Änderung nur einmal in dieser Klasse finden. Die Codeaktualisierung ist einfach zu warten. 🎜🎜🎜🎜🎜🎜🎜Ursprüngliche Adresse: https://juejin.cn/post/6957290009682509854🎜🎜🎜Autor: ClassmateLin🎜🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:掘金--ClassmateLin. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen