Heim >Backend-Entwicklung >PHP-Tutorial >Ein Neuling in PHP möchte fragen: Wann sollte ich eine Klasse und wann eine Funktion verwenden?
Einige Probleme können durch die direkte Verwendung von Klassen oder Funktionen gelöst werden. Und ich sehe, dass in einigen PHP-Frameworks die Methoden in vielen Klassen nicht auf Instanzen dieser Klasse angewiesen sind und es in diesen Klassen keine Attribute (Variablen) gibt besser Klassen verwenden. Wenn Sie nicht static deklarieren, müssen Sie es instanziieren, bevor Sie es aufrufen können, was viel problematischer ist als eine Funktion. Warum verwenden viele PHP-Klassenbibliotheken eine Reihe von Klassen, um Funktionen zu implementieren, die mit nur wenigen Funktionen erreicht werden können?
Unter welchen Umständen sollte die Funktion verwendet werden und unter welchen Umständen sollte die Klasse verwendet werden?
Einige Probleme können durch die direkte Verwendung von Klassen oder Funktionen gelöst werden. Und ich sehe, dass in einigen PHP-Frameworks die Methoden in vielen Klassen nicht auf Instanzen dieser Klasse angewiesen sind und es in diesen Klassen keine Attribute (Variablen) gibt besser Klassen verwenden. Wenn Sie nicht static deklarieren, müssen Sie es instanziieren, bevor Sie es aufrufen können, was viel problematischer ist als eine Funktion. Warum verwenden viele PHP-Klassenbibliotheken eine Reihe von Klassen, um Funktionen zu implementieren, die mit nur wenigen Funktionen erreicht werden können?
Unter welchen Umständen sollte die Funktion verwendet werden und unter welchen Umständen sollte die Klasse verwendet werden?
Die Funktion der Klasse besteht darin, Funktionen zu packen. Wenn Sie mehrere Funktionen in ein Modul (eine Klasse) packen müssen, verwenden Sie die Klasse anstelle der bloßen Funktion.
Wann man es verwendet, ist eine Frage der Meinung und der örtlichen Gegebenheiten. Es besteht keine Notwendigkeit, eine perfekte Antwort zu finden
Ich denke, der Fragesteller hat möglicherweise kein umfassendes Verständnis der objektorientierten Philosophie.
Eine objektorientierte Klasse ist nicht so einfach wie das Kapseln einer Reihe von Funktionen in einem Modul. Sie ermöglicht es Ihnen, verschiedene Dinge in der Codewelt zu einem Ding (d. h. einem Objekt) zu abstrahieren und ihm dann Aktionen und Beschriftungen zu geben , also Methoden und Eigenschaften.
Wenn sich das Benutzermitglied beispielsweise anmelden und Beiträge verfassen kann und sein Name Chang Wei ist, können Sie ihm die Anmelde- und Beitragsmethoden sowie ein Namensattribut zuweisen.
Meine Antwort auf Ihre Frage lautet also: Wenn es sich um eine sehr kleine Funktion oder eine sehr allgemeine Funktion handelt, die an kein Objekt gekoppelt ist, verwenden Sie die Funktion, andernfalls die Klasse.
Das ist eine sehr interessante Frage, wie Sie sagten: „Unter welchen Umständen sollte die Funktion verwendet werden und unter welchen Umständen sollte die Klasse verwendet werden?“
Was ist los? Nennen Sie einfach 3 Beispiele:
Einmalige Mission?
Langfristige Wartung, komplexe Geschäftslogik, häufige Änderungen?
Langfristige Wartung, grundlegender Support, z. B. Entwicklungsframework?
Normalerweise handelt es sich um eine einmalige Aufgabe. Es spielt keine Rolle, was Sie verwenden. Erledigen Sie die Aufgabe einfach. Aufgaben, die eine langfristige Wartung erfordern, sind nicht nur Funktionen oder Klassen. Dies ist ein Ingenieurwesen, Software-Engineering.
Im Vergleich zur Vergangenheit sind Softwaresysteme auf Unternehmensebene größer und komplexer und ändern sich häufiger. Wie man die Komplexität reduziert und mit Änderungen umgeht, hat die Software-Engineering-Forschung gefördert und auch zur Entwicklung von Hochsprachen geführt mit stärkeren Ausdrucksfähigkeiten. Im Design nutzen wir Zerlegung, Abstraktion, hierarchische Struktur und andere Mittel, um Komplexität zu reduzieren und Veränderungen zu bewältigen.
Die blinde Vorschrift der objektorientierten Technologie umfasst Prinzipien wie Abstraktion, Kapselung, Modularität, Hierarchie, Typ, Parallelität und Persistenz. Es gibt viele traditionelle Arzneimittel, die seit der Antike überliefert sind. Es hat auch viele Klassiker wie „Programmierstil“, „Code-Enzyklopädie“, „Agile Softwareentwicklung – Prinzipien, Muster und Praktiken“, „Die Kunst, lesbaren Code zu schreiben“, „Software Design Refactoring“ und „Enterprise Application Architecture Patterns“ hinterlassen " 》......
Was ist also die Antwort? Ich weiß es auch nicht. Vielleicht muss man sich mit einem komplexen System quälen, um einige Prinzipien zu verstehen, die die Praxis leiten und Wissen mit Handeln verbinden.
Wenn es viele Werkzeugfunktionen gibt, ist es klarer, sie als statische Funktionen in der Werkzeugklasse aufzurufen, und es ist auch praktisch, Werkzeugfunktionen für verschiedene Zwecke zu klassifizieren.
Kategorien.
<code>class User function name function sex function age ...</code>