Die objektorientierte Programmierung soll Lösungen für große Softwareprojekte bereitstellen, insbesondere für Projekte, an denen mehrere Personen beteiligt sind. Wenn der Quellcode 10.000 Zeilen oder mehr umfasst, kann jede Änderung unerwünschte Nebenwirkungen haben. Dies geschieht, wenn Module geheime Allianzen bilden, wie in Europa vor dem Ersten Weltkrieg.
//haohappy Hinweis: Dies bedeutet, dass die Korrelation zwischen Modulen zu hoch und die gegenseitige Abhängigkeit zu stark ist. Das Ändern eines Moduls führt dazu, dass auch andere Module entsprechend geändert werden.
Stellen Sie sich vor, ein Modul, das Anmeldungen verarbeitet, ermöglicht es einem Kreditkartenverarbeitungsmodul, seine Datenbankverbindung zu teilen. Natürlich ist die Absicht gut, die Kosten für die Herstellung einer weiteren Datenbankverbindung zu sparen. Manchmal ändert das Anmeldeverarbeitungsmodul jedoch eine der Datenbankverbindungen. Der Name der Variablen kann die Vereinbarung zwischen den beiden zerstören und einen Fehler bei der Verarbeitung des Kreditkartenmoduls verursachen, was wiederum zu einem Fehler im Modul führt, das Rechnungen verarbeitet. Bald können alle irrelevanten Module im System Fehler machen Aus diesem
Grund bin ich der Meinung, dass die Kopplung und Kapselung ein Maß für den Grad der Abhängigkeit zwischen zwei Modulen ist
Wir hoffen auch, große Änderungen innerhalb eines bestimmten Moduls vornehmen zu können, ohne uns Gedanken über die Auswirkungen auf andere Module machen zu
müssen
Relativ unabhängig, und die Datenkommunikation zwischen Modulen geschieht über Schnittstellen. Module schnüffeln nicht gegenseitig an den Variablennamen, sondern senden Anfragen höflich über Funktionen.
Dies ist ein Prinzip, das Sie in jeder Programmiersprache und in vielen prozeduralen Sprachen verwenden können Sprachen Es ist verlockend, faul zu sein. Nichts hindert Sie daran, ein hypothetisches WEB mithilfe von Modulen zu erstellen. Objektorientierte Programmierung ist eine Möglichkeit für Programmierer, das Prinzip der Kapselung nicht zu
verletzen Aus abstrakter Sicht sind Methoden die Aktionen eines Objekts und Eigenschaften sind die Eigenschaften des Objekts. Aus programmtechnischer Sicht sind Methoden Funktionen und Eigenschaften Variablen. orientiertes System, jeder Teil ist ein Objekt. Das System besteht aus Objekten und den Beziehungen zwischen Objekten durch Methoden.
Eine Klasse definiert die Eigenschaften des Objekts. Wenn Sie eine Reihe von Cookie-Objekten backen, ist die Klasse eine Cookie-Maschine. Die Eigenschaften und Methoden der Klasse werden als Mitglieder oder Methodenmitglieder bezeichnet.
Jede Sprache bietet unterschiedliche Möglichkeiten für den Zugriff auf Objekte. PHP stammt aus C++-Entlehnungskonzepten und stellt einen Datentyp zur Verfügung, der Funktionen und Variablen enthält Identifikator. Als PHP ursprünglich entworfen wurde und selbst als PHP3 entwickelt wurde, war PHP nicht dazu gedacht, die Entwicklung großer Projekte mit mehr als 100.000 Codezeilen zu ermöglichen. Mit der Entwicklung von PHP und der Zend-Engine ist es möglich geworden, große Projekte zu entwickeln, aber egal wie groß Ihr Projekt ist, das Schreiben Ihrer Skripte in Klassen ermöglicht die Wiederverwendung von Code. Dies ist eine gute Idee, insbesondere wenn Sie bereit sind, Ihren Code mit anderen zu teilen.
Die Idee von Objekten ist eines der spannendsten Konzepte der Informatik. Am Anfang ist es schwer, es zu beherrschen, aber ich kann garantieren, dass sich das Denken mit dem Verstand sehr natürlich anfühlen wird, wenn man es erst einmal beherrscht.
Das Objektmodell von PHP5
verfügt über eine einzelne Vererbung, einen eingeschränkten Zugriff und ein überladbares Objektmodell, das später in diesem Kapitel ausführlich besprochen wird. Darüber hinaus unterstützt PHP Attribute und eingeschränkten Zugriff Sie können Mitglieder als privat deklarieren und den Zugriff von externen Klassen verbieten. Das
PHP5-Objektmodell behandelt Objekte anders als alle anderen Datentypen, die Sie nicht benötigen um Objekte explizit per Referenz zu übergeben und zurückzugeben, wird am Ende dieses Kapitels ausführlich erläutert. Es ist die wichtigste neue Funktion in PHP5.
Es ist direkter. Das Objektmodell hat zusätzliche Vorteile: erhöhte Effizienz , weniger Speicherverbrauch und größere Flexibilität.
Jetzt werden in PHP5 nur noch Handles verschoben. Die Verbesserung der Skriptausführungseffizienz ist auf die Vermeidung unnötigen Kopierens zurückzuführen Dies bringt Komplexität mit sich und bringt auch Vorteile bei der Ausführungseffizienz. Gleichzeitig bedeutet die Reduzierung des Kopierens, dass weniger Speicher belegt wird, der reserviert werden kann. Dadurch wird mehr Speicher für andere Vorgänge frei, was auch die Effizienz verbessert
. Eine gute Entwicklung besteht darin, die Ausführung einer Klassenmethode durch Zerstörung zu ermöglichen, bevor das Objekt zerstört wird. Dies ist auch für die Speichernutzung von großem Vorteil, da es PHP ermöglicht, klar zu erkennen, wann kein Verweis auf das Objekt vorhanden ist, und den freien Speicher zuzuweisen
Für
andere Verwendungszwecke
verwendet PHP5 die Zend Engine II und die Objekte werden in einer separaten Struktur gespeichert. Der Objektspeicher wird nicht wie andere allgemeine Variablen in Zval gespeichert (in PHP4 werden Objekte wie allgemeine Variablen in Zval gespeichert)
.
). In Zval wird nur der Zeiger des Objekts gespeichert und nicht der Inhalt (Wert). Wenn wir ein Objekt kopieren oder ein Objekt als Parameter an eine Funktion übergeben, müssen wir die Daten nicht kopieren. Behalten Sie einfach den gleichen Objektzeiger bei und benachrichtigen Sie den Objektspeicher, auf den dieses bestimmte Objekt jetzt zeigt, über einen anderen ZVAL. Da sich das Objekt selbst im Objektspeicher befindet, wirken sich alle Änderungen, die wir daran vornehmen, auf alle zval-Strukturen aus, die Zeiger auf das Objekt enthalten – was sich im Programm manifestiert, da sich alle Änderungen am Zielobjekt auf das Quellobjekt auswirken. .Dadurch sehen PHP-Objekte so aus, als würden sie immer als Referenz übergeben, sodass Objekte in PHP standardmäßig als „Referenz“ übergeben werden und Sie nicht mehr & verwenden müssen, um sie wie in PHP4 zu deklarieren.
Garbage-Collection-Mechanismen
in einigen Sprachen, am häufigsten in C, erfordern, dass Sie beim Erstellen einer Datenstruktur explizit nach der Speicherzuweisung fragen. Sobald Sie Speicher zugewiesen haben, können Sie Informationen in Variablen speichern. Gleichzeitig müssen Sie den Speicher freigeben, wenn Sie mit der Verwendung der Variablen fertig sind, damit der Computer Speicher für andere Variablen freigeben kann und verhindert wird, dass ihm der Speicher ausgeht.
PHP kann den Speicher automatisch verwalten und Objekte löschen, die nicht mehr benötigt werden. PHP verwendet einen einfachen Garbage-Collection-Mechanismus namens Referenzzählung. Jedes Objekt enthält einen Referenzzähler und jede mit dem Objekt verbundene Referenz erhöht den Zähler um eins. Wenn die Referenz den Wohnraum verlässt oder auf NULL gesetzt wird, wird der Zähler um 1 dekrementiert. Wenn der Referenzzähler eines Objekts Null erreicht, weiß PHP, dass Sie das Objekt nicht mehr verwenden müssen und gibt den von ihm belegten Speicherplatz frei.
Zum Beispiel:
<?php
Klassenperson{}
function sendEmailTo(){}
$haohappy = new Person( );
// Neues Objekt erstellen: Referenzzähler Referenzzähler = 1
$haohappy2 = $haohappy;
// Nach Referenz kopieren: Referenzanzahl = 2
unset($haohappy);
// Eine Referenz löschen: Referenzanzahl = 1
sendEmailTo($haohappy2);
// Objekt als Referenz übergeben:
// Während der Funktionsausführung:
// Referenzanzahl = 2
//Nach der Ausführung:
// Referenzanzahl = 1
unset($haohappy2);
// Referenz löschen: Referenzanzahl = 0 Speicherplatz automatisch freigeben
?>