(1) Reine PHP-Code-Quelldateien verwenden nur das
(2) Das Codierungsformat des PHP-Codes in der Quelldatei muss das BOM-freie UTF-8-Format sein; das Zeilenendezeichen;
(4) Eine Quelldatei führt nur eine Art von Deklaration durch, das heißt, diese Datei wird speziell zum Festlegen von Konfigurationsinformationen verwendet sie zusammen;
2. Einzug
Es wird empfohlen, maximal 120 Zeichen zu schreiben. Wenn diese Zahl überschritten wird, kann sie von einem allgemeinen Editor festgelegt werden.
Fügen Sie eine Notiz hinzu, um horizontales und vertikales Scrollen zu verhindern,
4. Schlüsselwörter und True/False/Null
Der Schlüssel zu PHP Wörter müssen Kleinbuchstaben sein, und boolesche Werte: true, false und null müssen ebenfalls Kleinbuchstaben sein.
Benennung(1), der Klassenname wird in StudlyCaps geschrieben;
Zum Beispiel Funktionskommentare, Variablenkommentare usw. Zu den gängigen Tags gehören @package, @var, @param, @return, @author, @todo, @throws
Muss den Tag-Regeln von phpDocument entsprechen, Erstellen Sie außerdem keine neuen Tags. Weitere Tags finden Sie auf der offiziellen Website von phpDocument
7. Geschäftsmodul
(1) Bei mehreren Vorgängen zum Aktualisieren/Hinzufügen von Datentabellen die äußerste Ebene Es sollten Transaktionen verwendet werden, um die Atomizität von Datenbankoperationen sicherzustellen.
(4) Der Controller führt nur URL-Routing durch, nicht als Geschäftsmethode aufrufen.
(5) (), order() und andere Modellmethoden,
where(), order(), limit() und andere SQL-Methoden können nur in der Modellschicht und der Geschäftsschicht erscheinen!
2. Codestil
1. Namespace (Namespace) und Import (Use)-Deklarationen
Beschreiben Sie es zunächst kurz im Text:
Nach der Namespace-Deklaration muss eine Leerzeile stehen.
Eine Anweisung darf nur ein Import-(Verwendungs-)Schlüsselwort enthalten.
Nach dem Import-(Verwendungs-)Deklarationscodeblock muss eine Leerzeile stehen. OK; >
1 2 3 4 5 6 |
namespace LibDatabases; // 下面必须空格一行
class Mysql {
} |
namespace下空一行,才能使用use,再空一行,才能声明class
| <🎜><🎜>namespace LibDatabases; // 下面必须空格一行<🎜><🎜> <🎜><🎜>use FooInterface; // use 必须在namespace 后面声明<🎜><🎜>use BarClass as Bar;<🎜><🎜>use OtherVendorOtherPackageBazClass; // 下面必须空格一行<🎜><🎜> <🎜><🎜>class Mysql {<🎜><🎜> <🎜><🎜>}<🎜> | ||||
| <🎜><🎜>Namespace LibDatabaes; |
<🎜>1<🎜><🎜>2<🎜><🎜>3<🎜><🎜>4<🎜><🎜>5<🎜><🎜>6<🎜><🎜> 7<🎜><🎜>8<🎜> | <🎜><🎜>namespace LibDatabaes;<🎜><🎜> <🎜><🎜>class Mysql extends ParentClass implements PDO, DB { // 写一行<🎜 ><🎜> public $foo = null;<🎜><🎜> private $name = 'yangyi';<🎜><🎜> protected $age = '17';<🎜><🎜>}<🎜> td> |
(3) Die Methode muss ihre Sichtbarkeit deklarieren, egal ob sie öffentlich, geschützt oder privat ist, sie darf nicht weggelassen werden. Wenn es mehrere Parameter gibt, folgen Sie dem ersten Parameter mit „“, und fügen Sie ein Leerzeichen hinzu: Funktionsname ($par, $par2, $pa3). Wenn die Parameter Standardwerte haben, trennen Sie sie durch ein Leerzeichen links und rechts von „. =".
| <🎜><🎜>namespace LibDatabaes;<🎜><🎜> <🎜><🎜>class Mysql erweitert ParentClass implementiert PDO, DB { // Eine Zeile schreiben <🎜><🎜> public getInfo($name, $age, $gender = 1) { // Zwischen den Parametern steht ein Leerzeichen. Um das „=" des Standardparameters befindet sich ein Leerzeichen und zwischen ) und { <🎜><🎜> <🎜><🎜> }<🎜><🎜>}<🎜> | befindet sich ein Leerzeichen
<🎜><🎜>namespace VendorPackage;<🎜><🎜> <🎜><🎜>abstract class ClassName {<🎜><🎜> protected static $foo; // statisch dahinter setzen < 🎜><🎜> abstract protected function zim(); // abstract steht an erster Stelle <🎜><🎜> <🎜><🎜> final public static function bar() { // final steht an erster Stelle, static steht an letzter Stelle. <🎜><🎜> // Methodenkörperteil <🎜><🎜> }<🎜><🎜>}<🎜> |
Kontrollschnittstelle, d. h. if else while-Schalter usw. Diese Art von Schreibstandard ist oft problematisch und sollte daher standardisiert werden.
(1) If, elseif, else Schreibmethode, gehen Sie einfach zum Standardcode:
| <🎜> php <🎜><🎜>if ($expr1) { // Zwischen if und ( gibt es ein Leerzeichen zwischen ) und { <🎜><🎜> <🎜><🎜>} elseif ($expr2) { // elesif wird fortlaufend geschrieben, es gibt ein Leerzeichen zwischen (,) und { Es gibt ein Leerzeichen zwischen <🎜><🎜> <🎜><🎜>} else { // else Es gibt ein Leerzeichen links und rechts <🎜><🎜 > <🎜><🎜>}<🎜> |
<🎜>1<🎜><🎜>2<🎜><🎜>3<🎜><🎜> 4<🎜><🎜>5<🎜 ><🎜>6<🎜><🎜>7<🎜><🎜>8<🎜><🎜>9<🎜><🎜>10<🎜><🎜>11 <🎜><🎜>12<🎜> <🎜>13<🎜><🎜>14<🎜><🎜>15<🎜><🎜>16<🎜><🎜>17<🎜> | < td class="code" style="padding :3px;border:1px solid rgb(204,204,204);border-collapse:collapse;margin:0px;background:none;float:none;height:auto;line-height:1.1em ;vertical-align:baseline;width:auto ;font-family:Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;min-height:auto;"><🎜><🎜>switch ($expr) { // Es gibt ein Leerzeichen zwischen switch und (, es gibt ein Leerzeichen zwischen ) und {<🎜><🎜> case 0:<🎜><🎜> echo 'Erster Fall, mit eine Pause'; // Ausrichtung<🎜> <🎜> ausgerichtet. <🎜><🎜>Fall 1:<🎜><🎜>echo 'Zweiter Fall, der durchfällt';<🎜><🎜> // keine Pause<🎜><🎜>Fall 2:<🎜><🎜> Fall 3:<🎜><🎜> Fall 4:<🎜><🎜> echo 'Dritter Fall, Rückkehr statt Pause';<🎜><🎜> return;<🎜><🎜> Standard:<🎜><🎜 > echo 'Default case';<🎜><🎜> break;<🎜><🎜>}<🎜>
(3)、while,do while ;width:951px;padding:0px;background:none;float:none;height:auto;line-height:1.1em;vertical-align:baseline;font-family:Consolas, 'Bitstream Vera Sans Mono', 'Courier New ', Courier, monospace;font-size:12px;min-height:auto;" border="0">
1 2 3 4 5 6 7 8 | while ($expr) { // while 与 ( 之间有一个空格, ) 与 { 之间有一个空格
}
do { // do 与 { 之间有一个空格
} while ($expr); // while 左右各有一个空格 |
2
1 2 3 4 | for ($i = 0; $i < 10; $i++) { // for 与 ( 之间有一个空格,二元操作符 "="、"<" 左右各有一个空格,) 与 { 之间有一个空格
} |
<🎜>1<🎜><🎜>2<🎜><🎜>3<🎜><🎜>4<🎜> | <🎜><🎜>for ($i = 0; $ i < 10; $i++) { // für 与 ( 之间有个空格,二元操作符 "="、"<" 左右各有个空格,) 之间有个空格<🎜>< 🎜> <🎜><🎜>}<🎜> |
(5)、foreach的写法
| <🎜><🎜>foreach ($iterable as $key = > 🎜>} |
123456 78 | <🎜>try { // try 右边有一个空格<🎜><🎜> <🎜><🎜>} catch (FirstExceptionType $e) { / / Catch 与 ( 之间有一个空格,) 与 { 之间有一个空格<🎜><🎜> <🎜><🎜>} catch (OtherExceptionType $e) { // Catch 与 ( 之间有一个空格,)与 { 之间有一个空格<🎜><🎜> <🎜><🎜>}<🎜> |
(1), dem Zeilenkommentar
/ muss ein Leerzeichen folgen
Wenn davor ein nicht leeres Zeichen steht; von //, dann // Ein Leerzeichen muss vor
(2) eingefügt werden, Funktionskommentare
Der Text von Parameternamen, Attributnamen und Beschriftungen muss ausgerichtet sein und down;
sollte vor dem ersten Label hinzugefügt werden. Eine leere Zeile;
| <🎜>< ?php<🎜><🎜>/**<🎜><🎜> * Dies ist eine Beispielfunktion zur Veranschaulichung zusätzlicher PHP<🎜><🎜> * Formatierungsoptionen.<🎜><🎜> *<🎜><🎜> * @param $one Der erste Parameter<🎜> <🎜> * @param int $two Der zweite Parameter<🎜><🎜> * @param string $two Der dritte Parameter mit einem längeren<🎜><🎜> * Kommentar zur Veranschaulichung des Zeilenumbruchs.<🎜><🎜> * @ return void<🎜><🎜> * @author phpgo.cnblogs.com<🎜><🎜> * @license GPL<🎜><🎜> * /<🎜><🎜>function foo($one, $two = 0, $ three = "String") {<🎜><🎜> <🎜> <🎜>}<🎜> |
(1), Zuweisungsoperatoren (=, += usw.), logische Operatoren (&&, ||), Gleichheitszeichenoperatoren (==, !=), Beziehungsoperatoren (<, >, <=, >=), bitweise Operatoren (&, |, ^), Konnektoren (.) Links und rechts befindet sich ein Leerzeichen
(2) , if, else, elseif, while, do, switch, for, foreach, try, Catch, Finally usw. Zwischen der unmittelbaren linken Klammer „(“;
(3), function, Between befindet sich ein Leerzeichen Bei den verschiedenen Parametern der Methode steht nach dem Komma ein Leerzeichen (",");
(4) gibt es eine Leerzeile zwischen Namespace-Anweisung, Use-Anweisung und Clase-Anweisung
(5) , Return-Anweisung
If Es gibt nur eine Zeile PHP-Code vor der Return-Anweisung. Es ist keine Leerzeile vor der Return-Anweisung erforderlich.
Wenn vor der Return-Anweisung mindestens zwei Zeilen PHP-Code vorhanden sind, fügen Sie ein Leerzeichen hinzu Zeile vor der Return-Anweisung;
(5), es gibt eine Leerzeile zwischen if, while, switch, for, foreach, try und anderen Codeblöcken;
【Zusammenfassung des Referenzbeispiels】Referenz 1:
1 2 3
| <🎜> <🎜>namespace LibDatabaes;<🎜><🎜> <🎜><🎜>class Mysql erweitert ParentClass-Implementierungen PDO, DB { // Eine Zeile schreiben <🎜><🎜> public getInfo($name , $age, $ gender = 1) { // Zwischen den Parametern steht ein Leerzeichen. Um das „=" des Standardparameters befindet sich ein Leerzeichen und zwischen ) und { <🎜><🎜> <🎜><🎜> }<🎜><🎜>}<🎜> | befindet sich ein Leerzeichen
参考2:
| <🎜><🎜>namespace VendorPackage;<🎜><🎜> <🎜><🎜>abstract class ClassName {<🎜><🎜> protected static $foo; // static放后面<🎜><🎜> abstract protected function zim(); // abstract放前面<🎜><🎜> <🎜><🎜> final public static function bar() { // final放前面,static放最后.<🎜><🎜> // 方法主体部分<🎜>< 🎜> }<🎜><🎜>}<🎜> |
参考3:
|
<🎜>namespace libraryModel;<🎜><🎜> <🎜><🎜>use libraryHelperImageHelper;<🎜> <🎜>use libraryLogicUserMainLogic;<🎜><🎜> <🎜><🎜>/**<🎜><🎜> * Benutzertabellendatenmodell <🎜><🎜> *<🎜><🎜> * @package LibraryModel<🎜><🎜>*/<🎜><🎜>class UserMainModel extends BasicModel {<🎜><🎜> /**<🎜><🎜> * Benutzerstatistiken abrufen <🎜><🎜> *<🎜><🎜> * @param int $userId Benutzer-ID<🎜><🎜> * @return array<🎜><🎜>* /<🎜><🎜> public function getUserCard($userId) {<🎜><🎜> $userId = intval($userId);<🎜><🎜> return UserMainLogic::instance()->getUserCard($userId ); } /** * Benutzerinformationen basierend auf der ID abrufen * * @param int $userId UserId * @param string $field Anzeigefeld * @return array*/ public function getByUserId($userId = 0, $field = '*' ) { if (empty($userId)) { return array() array('id' => $userId); $info = $this->field($field)->where($where)->find(); if (isset($info['image']) && isset($info['sex'])) { $info['image'] = ImageHelper::GetImageUrl($info['image' ], $info['sex']); } return $info; }} |
参考4:
|
$serv = new swoole_server("127.0.0.1", 9502); // legt die Serverkonfiguration fest. Wir setzen task_worker_num config auf größer als 0, um die Unterstützung von Task-Workern zu ermöglichen$serv->set(array('task_worker_num' => 4)); // Handler für Empfangsereignis anhängen, die oben erläutert wurden.$serv->on('receive', function($serv , $fd, $from_id, $data) { // Wir leiten eine Aufgabe an Aufgabenarbeiter weiter, indem wir die task()-Methode von $serv aufrufen // Diese Methode gibt eine Aufgaben-ID zurück als Identität dieser Aufgabe $task_id = $serv->task($data); echo "Dispath AsyncTask: id=$task_idn";} ); // Handler für Aufgabenereignis anhängen, der Handler wird in Aufgabenarbeitern ausgeführt.$serv->on('task', function ( $serv, $task_id, $from_id, $data) { // Behandeln Sie die Aufgabe, machen Sie mit $data, was Sie wollen echo "Neue AsyncTask[id=$task_id]". PHP_EOL; // Nachdem die Aufgabe bearbeitet wurde, geben wir die Ergebnisse an den Anrufer-Worker zurück. $serv->finish("$data -> OK");}); // Handler für Finish-Ereignis anhängen, der Handler wird in Server-Workern ausgeführt, derselbe Worker hat diese Aufgabe zuvor gesendet. $serv->on('finish', function ($serv, $task_id, $data) { echo "AsyncTask[$task_id] Finish: $data".PHP_EOL; }); $serv->start(); |
Zusammenfassung: Alle linken geschweiften Klammern { brechen keine neuen Zeilen um, und die Zeile direkt darunter { darf keine Leerzeile sein!
Die oben genannten Codestilspezifikationen beziehen sich auf die Spezifikationen von Entwicklungssprachen wie Java, JavaScript, Objective-C und Go!
Die Java-Sprache hat einen tiefgreifenden Einfluss auf chinesische Programmierer, und die meisten Menschen sind es immer noch gewohnt, die linke geschweifte Klammer { ohne Zeilenumbruch zu lassen!
Schreibprinzip: Machen Sie den Code kompakt, ohne die kleine Modularität zu verlieren!
PSR-4-Spezifikation ist eine neue Spezifikation, die gerade erschienen ist. Sie regelt auch das automatische Laden (Autoload). PSR-0 sind ergänzende Spezifikationen
Lassen Sie mich kurz erläutern, hauptsächlich die folgenden Punkte:
Die Abschaffung von PSR-0 ist eine Verzeichnisaufteilung in der Art und Weise, wie Symbole geschrieben werden , _underscore hat in vollständig qualifizierten Klassennamen keine besondere Bedeutung.
Der Name der Klassendatei muss mit .php enden.
Der Klassenname muss genau mit dem entsprechenden Dateinamen übereinstimmen und die Groß-/Kleinschreibung muss genau gleich sein.
Referenz:
Kodierungsstilforschung: Ist die linke geschweifte Klammer eine neue Zeile? ? ?
PSR-[0-4]-Codespezifikation in PHP
Wenn nur ein Schlüssel-Wert-Paar vorhanden ist, schreiben Sie es in eine Zeile :
|
$where = array('id' => 789);
|
1234 | $where = array( 'id ' => 789, 'user_name' => 'phpgo'); |
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonTeilen von PHP-Codestil-Stilspezifikationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!