Hej,
chciałbym, aby moja funkcja anonimowa korzystała z kontekstu, w jakim powstała (jego zmiennych, itp).
W JavaScripcie podobny kod działa, w PHP widzę, że funkcja anonimowa odcina wszystko „z zewnątrz”. A może o czymś nie wiem?
Tutaj kod:
/**
* Funkcja wykorzystująca tekst, który należy wcześniej „złamać” na wiele linii.
*/
function test()
{
$text = 'Trololo lol olo lo';
$some_kind_of_context_variable = true;
/**
* Algorytm łamiący linie potrzebuje mieć metodę mierzenia długości tekstu.
* Metoda to może jednak wyglądać różnie – zależnie od kontekstu w jakim ma być użyte łamanie.
* Chcę więc przekazywać metodę mierzenia w funkcji anonimowej.
*/
$lines = wrap($text, 20, function($text_to_measure) {
// „Trolololo” – OK, parametr się pięknie przekazał
// NULL – Niestety, nie mam dostępu do swojej zmiennej kontekstowej…
var_dump($some_kind_of_context_variable);
return $text_width;
});
}
/**
* Funkcja oparta o jednym z algorytmów łamiących tekst.
*
* @param string $text
* @param mixed $max_width
* @param function $measure_text
* @return array $lines
*/
function wrap($text, $max_width, $measure_text)
{
// jakiś fragment algorytmu…
$text_width = $measure_text($some_part_of_text_to_measure);
// …dalsza część algorytmu…
return $lines;
}
Z góry dzięki
Ten post edytował MacDada 22.09.2011, 00:19:41