suchen

Collection Classes in PHP

Kernpunkte

  • PHP-Sammelklasse ist eine objektorientierte Alternative zu herkömmlichen Array-Datenstrukturen.
  • Die grundlegende Sammlungsklasse sollte Methoden zum Hinzufügen, Abrufen und Löschen von Elementen sowie Methoden zur Bestimmung bereitstellen, ob die Sammlungsgröße und gegebenen Tasten in der Sammlung vorhanden sind.
  • Sammlungsklassen können die Leistung verbessern, insbesondere bei der Arbeit mit großen Datensätzen, da sie verzögerte Instanziierung verwenden, wodurch Elemente im Array nur bei Bedarf erstellt werden und Systemressourcen sparen.
  • Sammlungsklassen sind besonders nützlich, wenn sie mit Datenbanken mit PHP arbeiten, da sie große Datensätze effizienter verwalten und den Code leichter zu lesen und zu warten.

Sammlungsklassen sind objektorientierte Alternativen zu herkömmlichen Array-Datenstrukturen. Ähnlich wie bei Arrays enthalten Sammlungen Elemente, obwohl diese Elemente eher Objekte als einfachere Typen wie Zeichenfolgen und Ganzzahlen sind. Die gängigen Merkmale von Sammelklassen sind:- Wrapper um Objektarrays erstellen. - Sammlungen sind veränderlich - Neue Elemente können hinzugefügt und vorhandene Elemente geändert oder gelöscht werden. - Der Sortieralgorithmus ist instabil (dies bedeutet, dass die Reihenfolge gleicher Elemente ungewiss ist). - Die Verzögerung der Instanziierung kann verwendet werden, um Systemressourcen zu sparen.

Array -Probleme

Anwendungen haben häufig Objekte, die andere Objektgruppen enthalten, was ein großartiger Ort für die Verwendung von Sammlungen ist. Angenommen, wir entscheiden uns, ein Buchhandelsystem zu erstellen. Angenommen, wir haben einer Kundenklasse geschrieben, die unter anderem auch eine Liste von Büchern spart, die der Kunde kaufen möchte: `` ` & lt;? PHP -Klasse Kunde { public $ poarts = array (); // ... }

$ customer = neuer Kunde (1234); foreach ($ customer- & gt; Artikel als $ item) { echo $ item- & gt; name; }

<code>
如果最明显的方法(使用数组)是最佳方法,我不会写这篇文章。上面的例子有这些问题:- 我们破坏了封装——数组作为公共成员变量公开。- 索引以及如何遍历数组以查找特定项目存在歧义。

此外,为了确保数组可用于任何可能访问它的代码,我们必须在与客户信息同时从数据库中填充信息列表。这意味着即使我们只想打印客户的姓名,我们也必须获取所有项目信息,这会不必要地增加数据库的负载,并可能拖慢整个应用程序。我们可以通过创建一个集合类作为数组的面向对象包装器并使用延迟实例化来解决这些问题。延迟实例化是一种机制,通过这种机制,我们只在我们实际需要时才创建数组中的元素。它被称为“延迟”,因为对象自行决定何时实例化组件对象,而不是在实例化时盲目地创建它们。


**基本的集合类**

集合类需要公开允许我们添加、检索和删除项目的方法,并且拥有一个让我们知道集合大小的方法也很有帮助。因此,一个基本的类将从这里开始:```
<?php class Collection 
{
    private $items = array();

    public function addItem($obj, $key = null) {
    }

    public function deleteItem($key) {
    }

    public function getItem($key) {
    }
}</code></code>

$items Array bietet einen Ort, an dem Objekte als Mitglieder der Sammlung gespeichert werden können. addItem() ermöglicht es uns, der Sammlung neue Objekte hinzuzufügen, deleteItem() Objekte löschen, getItem() Rückgabeobjekte. Mithilfe addItem() fügen wir das Objekt zur Sammlung hinzu, indem wir es in den angegebenen Ort des $items -Array einstellen (falls kein Schlüssel bereitgestellt wird, lassen Sie PHP den nächsten verfügbaren Index auswählen). Wenn Sie versuchen, ein Objekt mit einem vorhandenen Schlüssel hinzuzufügen, sollte eine Ausnahme ausgelöst werden, um eine unbeabsichtigte Überschreibung vorhandener Informationen zu verhindern: `` ` public function addItem ($ obj, $ key = null) { if ($ key == null) { $ this- & gt; Artikel [] = $ obj; } anders { if (isset ($ this- & gt; punkte [$ key])) { Neue Keyhasusexception werfen ("Key $ Key bereits verwendet."); } anders { $ this- & gt; Artikel [$ key] = $ obj; } } }

<code>
如果最明显的方法(使用数组)是最佳方法,我不会写这篇文章。上面的例子有这些问题:- 我们破坏了封装——数组作为公共成员变量公开。- 索引以及如何遍历数组以查找特定项目存在歧义。

此外,为了确保数组可用于任何可能访问它的代码,我们必须在与客户信息同时从数据库中填充信息列表。这意味着即使我们只想打印客户的姓名,我们也必须获取所有项目信息,这会不必要地增加数据库的负载,并可能拖慢整个应用程序。我们可以通过创建一个集合类作为数组的面向对象包装器并使用延迟实例化来解决这些问题。延迟实例化是一种机制,通过这种机制,我们只在我们实际需要时才创建数组中的元素。它被称为“延迟”,因为对象自行决定何时实例化组件对象,而不是在实例化时盲目地创建它们。


**基本的集合类**

集合类需要公开允许我们添加、检索和删除项目的方法,并且拥有一个让我们知道集合大小的方法也很有帮助。因此,一个基本的类将从这里开始:```
<?php class Collection 
{
    private $items = array();

    public function addItem($obj, $key = null) {
    }

    public function deleteItem($key) {
    }

    public function getItem($key) {
    }
}</code></code>

Da der Parameter addItem() der $key -Methode optional ist, wissen wir nicht unbedingt die Schlüssel, die von jedem Element in der Sammlung verwendet werden. Es ist eine gute Idee, einen Weg hinzuzufügen, um jedem externen Code eine Liste von Schlüssel zur Verfügung zu stellen, die möglicherweise erforderlich sind. Der Schlüssel kann als Array zurückgegeben werden: `` ` öffentliche Funktion Keys () { return array_keys ($ this- & gt; items); }

<code>
`deleteItem()` 和 `getItem()` 方法将键作为参数,指示哪些项目是针对删除或检索的目标。如果提供了无效的键,则应抛出异常。```
public function deleteItem($key) {
    if (isset($this->items[$key])) {
        unset($this- >items[$key]);
    }
    else {
        throw new KeyInvalidException("Invalid key $key.");
    }
}

public function getItem($key) {
    if (isset($this->items[$key])) {
        return $this->items[$key];
    }
    else {
        throw new KeyInvalidException("Invalid key $key.");
    }
}</code>

und weil getItem() und deleteItem() eine Ausnahme ausführen können, wenn ein ungültiger Schlüssel übergeben wird, ist es auch eine gute Idee, festzustellen, ob ein bestimmter Schlüssel im Satz vorhanden ist. `` ` öffentliche Funktion KeyExists ($ key) { Return Isset ($ this- & gt; Artikel [$ key]); }

<code>
知道集合中有多少项目可能也有帮助。```
public function length() {
    return count($this->items);
}</code>

Dieses Beispiel ist vielleicht nicht besonders interessant, aber es sollte Ihnen eine Vorstellung davon geben, wie diese Klasse verwendet wird.

Schlussfolgerung

Sammlungen können als professionellere Art der Arbeitsaufträge angesehen werden, in denen bestimmte Verträge garantiert sind. Sammelklassen sind eine sehr nützliche objektorientierte Alternative zu herkömmlichen Arrays und können in nahezu jeder Anwendung implementiert werden, die Sie möglicherweise erstellen. Es bietet sorgfältige Verwaltung und konsistente APIs für seine Mitglieder, was es einfach macht, Code zu schreiben, der die Klasse verwendet.

(Der FAQS-Teil wird hier weggelassen, da der Inhalt dieses Teils wenig mit dem Hauptthema des Artikels zu tun hat und zu lang ist, was den Pseudo-Ursprungseffekt beeinflusst. Bei Bedarf können Sie erzeugen eine Anforderung separat.)

>

Das obige ist der detaillierte Inhalt vonSammelkurse in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)Mar 03, 2025 am 10:49 AM

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

Arbeiten mit Flash -Sitzungsdaten in LaravelArbeiten mit Flash -Sitzungsdaten in LaravelMar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagierenErstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagierenMar 04, 2025 am 09:33 AM

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

Vereinfachte HTTP -Reaktion verspottet in Laravel -TestsVereinfachte HTTP -Reaktion verspottet in Laravel -TestsMar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsCurl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsMar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

12 Beste PHP -Chat -Skripte auf Codecanyon12 Beste PHP -Chat -Skripte auf CodecanyonMar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Ankündigung von 2025 PHP Situation SurveyAnkündigung von 2025 PHP Situation SurveyMar 03, 2025 pm 04:20 PM

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio

Benachrichtigungen in LaravelBenachrichtigungen in LaravelMar 04, 2025 am 09:22 AM

In diesem Artikel werden wir das Benachrichtigungssystem im Laravel -Web -Framework untersuchen. Mit dem Benachrichtigungssystem in Laravel können Sie Benachrichtigungen an Benutzer über verschiedene Kanäle senden. Heute werden wir diskutieren, wie Sie Benachrichtigungen OV senden können

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion