Heim  >  Artikel  >  Backend-Entwicklung  >  Handgeschriebene PHP API Framework (1) PSR-Spezifikation

Handgeschriebene PHP API Framework (1) PSR-Spezifikation

藏色散人
藏色散人nach vorne
2023-02-10 10:31:113452Durchsuche

Dieser Artikel bringt Ihnen relevantes Wissen über PHP mit. Es wird auch empfohlen, dass Sie versuchen, die Standards während der Entwicklung zu befolgen du hilfst.

Ursprüngliche Absicht der Schöpfung

  • Müde von der Verwendung von CURD?
  • Sind die verschiedenen Frameworks etwas überwältigend?
  • Haben Sie schon einmal versucht, selbst ein Framework zu entwerfen?
  • Ich habe die PHP-Syntax gelernt, aber ich habe kein Projekt, um sie zu üben und eine solide Grundlage zu legen.

Ich hoffe, es kann Ihnen helfen, schnell Ihr eigenes Framework zu erstellen und etwas Hilfe und Inspiration für Ihre Arbeit oder Ihr Studium zu bringen. Was können Sie lernen?

  • Lassen Sie mich vor der Entwicklung des Frameworks die Spezifikationen vorstellen, gefolgt von der Framework-Entwicklung.

    Die meisten Programmiersprachen haben ihre eigenen Codierungsstandards. Als „beste Sprache der Welt“ verfügt PHP sicherlich über eigene Codierungsstandards. Bei dieser Spezifikation handelt es sich um die PHP Standard Recommendation (kurz PSR).
  • Natürlich habe ich aus meiner eigenen Arbeit herausgefunden, dass viele PHP-Programmierer, insbesondere Nachwuchsprogrammierer, nicht wissen, dass PHP eine solche Spezifikation hat. Ich halte das für unwissenschaftlich.

  • Was ist PSR?
  • Bevor ich PSR vorstelle, muss ich die Organisation vorstellen, die diese Spezifikation formuliert hat ----- PHP-FIG, der vollständige Name lautet PHP Framework Interoperability.
  • Organisationsmitglieder formulieren Spezifikationen und implementieren sie in ihren eigenen Projekten. Obwohl es sich nicht um eine offizielle Organisation handelt, vertritt sie auch die meisten PHP-Community-Projekte wie CakePHP, Composer, Drupal, PEAR, Slim, Yii Framework, Zend Framework usw. Und immer mehr Projekte schließen sich diesem Standard an und folgen ihm.

    Der Zweck des PSR-Projekts besteht darin, durch Diskussionen zwischen Framework-Autoren oder Framework-Vertretern einen Zusammenarbeitsstandard mit den geringsten Einschränkungen zu entwickeln. Jedes Framework folgt einheitlichen Codierungsstandards, um Ingenieuren eine bessere Zusammenarbeit zu ermöglichen.
  • Bisher wurden 20 Artikel auf der offiziellen Website aufgeführt. Mit Ausnahme derjenigen, die sich in der Entwurfsphase befinden und verworfen wurden, sind es die folgenden 13 Artikel.


Wir könnten uns auch diese Spezifikationen ansehen:

PSR-1 Grundlegende Codierungsspezifikationen

PHP-Codedateien müssen mit

PHP-Code Dateien müssen mit UTF-8-Kodierung ohne BOM beginnen.

PHP-Code sollte nur Deklarationen wie Klassen, Funktionen, Konstanten oder andere Vorgänge definieren, die Nebenwirkungen erzeugen (z. B. das Generieren von Dateiausgaben und das Ändern von INI-Konfigurationsdateien usw.). , beide können nur eine auswählen

Der Namespace und die Klasse müssen der Autoloading-Spezifikation PSR-4 von PSR entsprechen

Die Benennung der Klasse muss der CamelCase-Namenskonvention folgen, beginnend mit einem Großbuchstaben im StudlyCaps-Stil

Alle Buchstaben der Konstanten in der Klasse müssen großgeschrieben werden, mit Unterstrichen zwischen Wörtern. Durch Trennzeichen getrennt.

Handgeschriebene PHP API Framework (1) PSR-SpezifikationMethodennamen müssen der Benennungskonvention für Kleinbuchstaben in Kamelbuchstaben im CamelCase-Stil entsprechen Deklarationen, Namespaces, Klassen und Vererbung sowie Kontrollstrukturen usw. veranschaulichen.


Schauen wir uns zunächst eine Demo an:

<?php

declare(strict_types=1);

namespace Vendor\Package;

use Vendor\Package\{ClassA as A, ClassB, ClassC as C};
use Vendor\Package\SomeNamespace\ClassD as D;

use function Vendor\Package\{functionA, functionB, functionC};

use const Vendor\Package\{ConstantA, ConstantB, ConstantC};

class Foo extends Bar implements FooInterface
{
    public function sampleFunction(int $a, int $b = null): array
    {
        if ($a === $b) {
            bar();
        } elseif ($a > $b) {
            $foo->bar($arg1);
        } else {
            BazClass::bar($arg2, $arg3);
        }
    }

    final public static function bar()
    {
        // method body
    }
}

Der Code muss den Codierungsspezifikationen in [PSR-1] entsprechen. Alle PHP-Dateien müssen Unix LF (Linefeed) als Zeilenabschluss verwenden.

    Alle PHP-Dateien muss mit einer Leerzeile als Ende beginnen;
  • Bei reinen PHP-Codedateien muss das letzte ?> Schluss-Tag weggelassen werden
  • Die Anzahl der Zeichen pro Zeile sollte sanft bei 80 liegen. Theoretisch darf sie nicht mehr als 120 betragen , aber es darf nicht sein. Es gibt strenge Einschränkungen; es dürfen keine zusätzlichen Leerzeichen nach nicht leeren Zeilen stehen
  • Leerzeilen können das Lesen des Codes erleichtern und helfen, den Code zu blockieren.
  • Es darf nicht mehr als eine Anweisung pro Zeile geben
  • Der Code muss mit 4 Leerzeichen eingerückt werden und die Tabulatortaste darf nicht verwendet werden
  • Alle PHP-Schlüsselwörter müssen vollständig in Kleinbuchstaben geschrieben sein
  • Die grundlegenden Spezifikationen der Kontrollstruktur sind wie folgt:

rrree Es gibt viele Codestilspezifikationen, daher werde ich sie hier nicht einzeln erklären. Sie können sie selbst lesen

Automatisches Laden von PSR-4

Über die relevanten Spezifikationen für das automatische Laden Die entsprechende Klasse aus dem Dateipfad ist interoperabel und kann als Ergänzung zu jeder automatischen Ladespezifikation, einschließlich PSR-0, verwendet werden. Darüber hinaus enthält dieser PSR auch die Dateispeicherpfadspezifikation, die der automatisch geladenen Klasse entspricht.
  • Der Begriff „Klasse“ bezieht sich hier im Allgemeinen auf alle Klassen, Schnittstellen, Merkmale, wiederverwendbaren Codeblöcke und andere ähnliche Strukturen.
  • Ein vollständiger Klassenname muss die folgende Struktur haben:
控制结构关键词后必须有一个空格。
左括号 ( 后一定不能有空格。
右括号 ) 前也一定不能有空格。
右括号 ) 与开始花括号 { 间一定有一个空格。
结构体主体一定要有一次缩进。
结束花括号 } 一定在结构体主体后单独成行。复制代码
  • Der vollständige Klassenname
  • muss
  • einen Namensraum der obersten Ebene haben, der als „Anbieter-Namensraum“ bezeichnet wird;
  • einen oder mehrere Unternamensräume haben;
  • Der vollständige Klassenname
  • muss einen endgültigen Klassennamen haben;
  • Unterstriche in irgendeinem Teil des vollständigen Klassennamens haben

  • Der vollständige Klassenname kann aus beliebigen Groß- und Kleinbuchstaben bestehen

  • Bei allen Klassennamen muss die Groß-/Kleinschreibung beachtet werden.

  • Wenn Sie die entsprechende Datei basierend auf dem vollständigen Klassennamen laden ...

    • Entfernen Sie im vollständigen Klassennamen das erste Namespace-Trennzeichen, einen oder mehrere aufeinanderfolgende Namespaces und Unter-Namespaces davor „Namespace-Präfix“, es muss mindestens einem „Datei-Basisverzeichnis“ entsprechen; als Verzeichnistrennzeichen. Der Klassenname

      am Ende von

    • muss denselben Namen wie die entsprechende Datei mit als Suffix haben.

    • Die Implementierung des Autoloaders darf keine Ausnahme auslösen, .php darf keine Fehlermeldung auf irgendeiner Ebene auslösen und

      sollte keinen Rückgabewert haben.
    • BeispielDie folgende Tabelle zeigt die Dateipfade, die dem vollständigen Klassennamen, dem Namespace-Präfix und dem Dateibasisverzeichnis entsprechen und der Spezifikation entsprechen.

  • Vollständiger Klassenname
    Namespace-Präfix

    Dateibasisverzeichnis

    DateipfadAcmeLogWriter. File_WriterAcmeLogWriter./acme-log -writer/lib /./acme- log-writer/lib/File_Writer.phpAuraWebResponseStatusAuraWeb/path/to/aura-web/src//path/to/aura-web/src/Response/Status.phpSymfonyCoreRequestSymfonyCore./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.phpZendAclZend/usr/inc. ludes/Z Ende// usr /includes/Zend/Acl.phpKlicken Sie hier, um weitere aktuelle Spezifikationsvorschläge anzuzeigen. In diesem Abschnitt wird hauptsächlich die PHP-Codierungsspezifikation PSR vorgestellt. Es wird empfohlen, dass jeder versucht, diese Spezifikation während der Entwicklung zu befolgen, insbesondere wenn wir als Team entwickeln eigene Codierung Der Stil sollte möglichst einheitlich sein. Wie die ursprüngliche Absicht der PHP-FIG-Organisation darlegte, besteht die von ihr festgelegte Spezifikation nicht darin, die Codierungsfreiheit aller einzuschränken, sondern darin, Gemeinsamkeiten zu finden, damit wir besser zusammenarbeiten können.
    Im Moment stellen wir nur diese drei häufig verwendeten Spezifikationen vor.

    Empfohlenes Lernen: „

    PHP-Video-Tutorial

    Das obige ist der detaillierte Inhalt vonHandgeschriebene PHP API Framework (1) PSR-Spezifikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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