Die Forderung nach einer Komponente FunktionWenn Sie eine Komponente Funktion aufzurufen, indem Sie die CFINVOKE Tag schafft ColdFusion eine Instanz dieser Komponente, und fordert die Funktion in der Methode Attribut mit dem Namen. Im Wesentlichen ColdFusion instanziiert ein Objekt der Klasse dieser Komponente, aber der Name des Objekts ist für Sie nicht sichtbar. (Es intern von ColdFusion Server verwiesen ist.) Wenn Sie CFINVOKE verwenden, um drei Funktionen einer Komponente in einem einzigen Anruf ColdFusion Vorlage, wie in den gezeigten Code erstellt ColdFusion Server drei separate Instanzen dieser Komponente, um Ihnen, was Sie wollen, und das ist nicht sehr effizient.
Der richtige Weg zu einer Komponente Funktionen aufrufen mehrfach aus einer Vorlage ist gesondert ein Objekt mit einem formalen Namen instanziieren und dann die Funktionen dieser Anruf ein Beispiel, wie Sie sie benötigen. Der Code zeigt dieses Prinzip in Aktion. Beachten Sie, dass die Komponente Attribut des CFINVOKE Tag auf eine Instanz der Komponente statt der Komponente selbst gehört. Sie erstellen eine Instanz der Komponente, die Firma so lange wie die aktuelle Seite Anfrage dauert anhält, dann rufen Sie einfach die Funktionen, die eine Instanz so oft wie Sie benötigen. Nach der aktuellen Seite Anfrage endet, ColdFusion zerstört automatisch die Instanz, die Sie erstellen. (Im folgenden Abschnitt erfahren Sie, wie Sie Ihren Komponenteninstanzen leben länger.) Verwenden des CFOBJECT Tag ist nicht der einzige Weg, um ein Objekt zu instanziieren. Die CreateObject ()-Funktion gibt ein Objekt als gut. Die folgenden drei Zeilen Code, z. B. zu den gleichen Ergebnissen:
Auch mit CFINVOKE ist nicht der einzige Weg, um eine Komponente Funktion aufzurufen. Nachdem Sie eine Instanz einer Komponente zu erstellen, können Sie die Methoden aufrufen, mit einfachen Punkt-Notation. Der Code, zum Beispiel, gibt die Liste der Unternehmen durch die ListCompanies produziert Funktion, um eine Variable namens listOfCompanies.
In der Tat ist der Code, der wohl populärste Form der Zusammenarbeit mit der Komponente Funktionen für ColdFusion Entwickler, die sich im Objekt-orientierte Sprachen versiert, wie die Syntax ist sehr auf die Art, wie Java und C + +-Objekte instanziiert und deren Methoden aufrufen zu schließen. Sie können direkt Access-Komponente Funktionen über Formen und URLs, aber die Ergebnisse sind im Grunde wertlos. Anstelle der Festlegung eines Rückgabewert von Ihrer Funktion, um die Funktion aufzurufen, die er hervorruft übergeben, müssen Sie Push darstellbaren Inhalte direkt aus dem Körper der Funktion, wie in den gezeigten Code ein.
Diese Art der Codierung ist böse Dinge, folks. Tun Sie es nicht. Die wirkliche Macht der Inhalte-Produktion von Funktionen, ob sie lokal zu einer Vorlage oder in einer Komponente gekapselt, kommt von der Rückkehr Inhalte in einer komplexen Variablen eines bestimmten Datentyps enthalten und dann die Zusammenlegung der Inhalt mit der Präsentation Code. Trennung von Logik und Darstellung (und darüber hinaus, Daten von der Präsentation) sollte Ihr Mantra. Wenn Sie unbedingt eine Funktion zu erstellen, die direkt Ausgänge Inhalte, entfernen Sie das Attribut aus dem ReturnType cffunction Tag und fügen Output = "Ja". Nie habe sowohl eine Rückkehr Art und direkte Ausgabe in die gleiche Funktion. Die Output-Attribut hat tatsächlich die folgenden drei Zustände: Ausgabe = "Ja" behandelt die gesamte Funktion, als ob es in einem CFOUTPUT Tag-Paar. Output = "Nein" behandelt die gesamte Funktion, als ob es in einem CFSILENT Tag-Paar. Die Beseitigung der Output-Attribut ermöglicht es ganz explizit CFOUTPUT Tags innerhalb der Funktion zur Ausgabe an den Aufrufer Leck. Wir haben nicht explizit über das Output-Attribut noch, denn dies ist eine lernende Artikel, und wir möchten so viel wie möglich fremden Code beseitigen, so dass Sie Ihre Konzentration auf bestimmte Themen konzentrieren können. In den vorangegangenen Teilen dieses Artikels erfahren Sie, wie zu einer benannten Instanz einer Komponente zu erstellen, erfahren Sie über die Grundlagen der Eigenschaften der Instanz in einer Komponente Dieser Bereich, und lernen Sie die Unterschiede zwischen den Methoden der Klasse und Instanz-Methoden. Nun, diese Theorien in die Tat umzusetzen! Die Instanz der Komponente, die Sie in den Code zu erstellen besteht nur solange, wie die Seite anfordern und dann ColdFusion Server automatisch zerstört. Wenn Sie mit einem anhaltenden Komponente an einer einzigen Seite Antrag arbeiten wollen, müssen Sie einfach es in einer persistenten Bereich erstellt werden, die das Leben mehr als eine Anfrage, wie in den gezeigten Code ein.
Nun diesem Fall besteht, solange der Sitzung des Benutzers wird, was bedeutet, dass seine Eigenschaften zu tun. Dies bedeutet, dass Sie ein ColdFusion ausführen kann Vorlage, die eine Instanz der Gesellschaft Komponente erstellt, gehen Sie eine Tasse Kaffee, führen Sie ein zweites ColdFusion Vorlage, die eine Funktion dieser Komponente aufruft, gehen Sie ein Gebot für eBay, führen ein Drittel ColdFusion-Vorlage, die eine weitere Funktion dieser Komponente aufruft, und so weiter, bis Sie längere Pause als der Session-Timeout Genehmigungen und die Instanz zerstört wird. Deshalb haben wir auf Unternehmen beziehen, wie ein langlebiger persistente Komponente. Komponenten können auch hartnäckig die Anwendung Umfang als auch. Denken Sie daran, dass alle Nutzer der Anwendung der gleichen Instanz der Komponente zu nutzen, so Verriegelung wird sogar noch kritischer Performance-Engpässe und möglicherweise stärker zu einem Thema, wenn die Komponente Eigenschaften in ihrer Dieser Bereich manipuliert. Wir wetten, dass, gerade jetzt, Sie ' neu denken: "Ich meine Bewerbung, was bedeutet, dass ich nicht verwenden Session-Variablen überall, so werde ich meine Komponente beispielsweise durch Serialisierung mit WDDX und das Speichern auf der Client-Bereich bestehen Clustering bin." Das ist eine kluge Idee, aber leider funktioniert es nicht. Wenn Sie eine Instanz der Komponente serialisieren, serialize die Eigenschaften in den Geltungsbereich dieser nur in Ordnung, aber verlieren Sie alle Ihre Aufgaben, so dass auf Deserialisierung alles, was Sie wieder die Eigenschaften. Ein Artikel eingereicht von Peter Andrews Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle. Wichtig: Dieser Artikel "Die Forderung nach einer Komponente Funktion" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.
|
|||||
| Online: 240 users browsing the articles directory |
|
|