Suchen
Inside Wiki
Nützliche Links




 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > phpforum.de Wiki > phpforum.de Wiki

PHP Wiki Dieses Wiki sammelt Lösungen, zu Problemen, welche immer wieder im Forum auftauchen.

 
 
Artikel-Optionen Ansicht
  #1  

Standard Closures

Closures sind vor allem aus den ECMAScript kompatiblen Sprachen wie JavaScript bekannt und werden in PHP allgemein als anonyme Funktionen eingesetzt. Das bedeutet die Funktion hat keinen Namen.

Wozu is's gut?
Closures kann man überall dort verwenden, wo man einen Callback braucht.
Das ist aber nicht der einzige Vorteil. Closures sind in der Lage Variablen aus dem übergeordneten Scope zu importieren und zwar durch das use-Schlüsselwort. Ein Beispiel:
PHP Quellcode:
$foo = "bar";
$closure = function(&$value, $index) use ($foo) {
  $value = $foo;
};
array_walk($imaginaeres_array, $closure);

Zu beachten ist, dass die Variable $foo vor der Closure-Deklaration bekannt sein muss, damit sie importiert werden kann. Mann könnte es so sehen, dass use-Variablen zum Zeitpunkt der Deklaration in das Objekt eingebrannt werden. Möchte man das Einbrennen verhindern, dann deklariert man die Variable einfach als Referenz.

Außerdem kann der ganze Funktionsrumpf wie man sieht in eine Variable geschoben werden. Closures sollen aber nicht die Funktion create_function() und Konsorten ersetzten. Der Inhalt von $closure ist auch kein Text sondern ein Objekt (vom Typ Closure).

Was mir persönlich gefällt - mit Hilfe der Closures ist nun auch folgender Ausdruck möglich:
PHP Quellcode:
<?php
$var = function() {
  ?> 
 <script type="text/javascript">
  alert("na schau");
  </script>
 <?php
};
echo $var();

Somit kann man direkt Javascript-Code "einschleusen" und bei Bedarf ausgeben, ohne HereDoc oder Text-Enclosings verwenden zu müssen UND kann den Code an andere Funktionen zB weitergeben.
Einfach Phantastisch für eine IDE, die den JavaScript-Code mitauswertet.

Möglich wirds ab PHP 5.3.


Mitwirkende: Gefrierbrand, frameone
Erstellt von frameone, 30.03.2011 am 04:22
Zuletzt bearbeitet von Gefrierbrand, 10.04.2011 am 13:17
2 Kommentare , 4318 Betrachtungen

Dieser Text steht unter der GNU-Lizenz für freie Dokumentation


 

Lesezeichen

Artikel-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Closures iago_999 PHP 8 07.11.2010 11:28
Sinn von Closures christian.bergau PHP 10 15.09.2009 02:46
Problem mit Closures CreamRoyal PHP 4 16.08.2009 20:52


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:10 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC