Refactoring von PHP-Multiparametermethoden (Codebeispiel)
Angenommen, wir möchten eine Funktion zum Speichern von Artikeln vervollständigen, sieht das wahrscheinlich so aus:
<?php function saveArticle($title, $content, $categoryId) { // ... } ?>
Jeder Parameter stellt ein Attribut dar, aber es bringt ein Problem mit sich ist sehr lang geworden. Zu diesem Zeitpunkt wäre es eine gute Idee, Objektprogrammierungstechnologie zu verwenden:
<?php class Article { var $title; var $content; var $categoryId; function save() { // ... } } ?>
Hier werden die ursprünglichen Methodenparameter in Attribute des Objekts umgewandelt, wodurch die Anzahl der Methodenparameter erheblich reduziert wird. Meistens ist diese Methode gut, aber nicht alle Parameter sind geeignet, in Form von Objektattributen zu existieren. Das Prinzip der Differenzierung besteht darin, zu sehen, ob diese Parameter zu den intrinsischen Attributen oder externen Merkmalen des Objekts gehören Wenn sie nicht unterschieden werden, werden sie alle in Objekteigenschaften umgewandelt, wodurch das Objekt selbst bedeutungslos würde.
Zum Beispiel verfügt unser Article-Objekt auch über eine Methode namens find. Bei der Verwendung können Parameter wie Limit, Offset, Reihenfolge usw. beteiligt sein:
<?php class Article { var $title; var $content; var $categoryId; var $limit = 10; var $offset = 0; var $order = 'created DESC'; function save() { // ... } function find($categoryId) { // ... } } ?>
Wie oben gezeigt, Once Wenn wir Parameter wie Limit, Offset und Order in Attribute des Objekts umwandeln, wird das Objekt selbst unscheinbar, denn obwohl Titel, Inhalt und CategoryId als intrinsische Attribute des Objekts gezählt werden können, sind Limit, Offset und Order dies nicht. Bestenfalls können sie nur als äußere Merkmale betrachtet werden. Das Ergebnis, sie nicht zu unterscheiden, ist im Grunde der Beginn eines Albtraums. Daher ist es besser, die externen Merkmale ehrlich in die Parameter der Methode einzufügen (genauer gesagt sollte die Suchmethode eine Methode vom statischen Typ sein, aber der Text ist eine einfache Erklärung, die nicht ins Detail gehen muss):
<?php class Article { var $title; var $content; var $categoryId; function save() { // ... } function find($categoryId, $limit = 10, $offset = 0, $order = 'created DESC') { // ... } } ?> 可惜如此一来又出现了文章开头所说的问题,find方法的参数太多了,缺乏可读性,所以还得重构: <?php class Article { var $title; var $content; var $categoryId; function save() { // ... } function find($categoryId, $options = array()) { $default = array( 'limit' => 10, 'offset' => 0, 'order' => 'created DESC' ); $options = array_merge($default, (array)$options); // ... } } ?>
Sie können beim Aufruf eine Methode ähnlich der folgenden verwenden:
$article->find(123, array('limit' => 20));
Um es einfach auszudrücken: Es verwendet Array-Parameter, um einen ähnlichen Effekt wie Schlüsselwortparameter zu simulieren Sie können also die Schlüsselnamen des Arrays verwenden, um die Funktion der Parameter zu beschreiben und so die Lesbarkeit des Codes zu erhöhen. Refactoring-Methoden wie diese werden häufig in Projekten wie CakePHP verwendet. Wenn Sie sie sorgfältig verstehen, können Sie beim Schreiben von Code instinktiv gut lesbaren Code schreiben.
Zusätzlich: Im Vergleich zu array_merge ist die Verwendung von $options += $default ebenfalls eine gute Wahl. Wenn die Logik von Optionen sehr komplex ist, können Sie außerdem anstelle eines Arrays auch ein Array verwenden, um die logischen Operationen mithilfe eines speziellen Objekts zu kapseln.
Das obige ist der detaillierte Inhalt vonRefactoring von PHP-Multiparametermethoden (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
