Cytat(Black-Berry @ 5.09.2008, 14:32:14 )

O rety

jakies podwójne podkreślniki zamiast funkcji... Chyba będzie lepiej jak zacznę czytać ksiazki
Dzieki za pooc ale nie potrafię z niej skorzystać

Przykład z SF pokazuje jak korzystać z funkcji, które wgryzają się w system nie poprzez parametry, a poprzez np. singletona z contextem.
Nadal (jak pamiętasz) uważam, że to kiepski pomysł. Chciałem zaproponować klasy statyczne (pamietasz mój przykład z innego topicu?) i chyba to zrobię.
<?php
// bardzo prosty koncepcyjnie przykład, ale teoretycznie powinien działać od ręki.
class Context {
// to o czym rozmawialiśmy już kiedyś
// getDatabaseManager()
// setDatabaseManager(DatabaseManager $database)
// getRoutingManager()
// setRoutingManager(RoutingManager $routing)
// getInternationalisationManager()
// setInternationalisationManager(InternationalisationManager $internationalisation)
// etc
}
abstract class Helper {
public static function initialize
(Context
$context) // PAMIĘTAJ! {
self::$context = $context;
}
}
class InternationalisationHelper extends Helper
{
public static function translate
($text) {
return self::$context->getInternationalisationManager()->translate($text);
}
}
// Musisz zadbać, by gdzieś przy starcie systemu, przekazywał on kontekst do klasy
Helper
// Dzieki temu wszystkie inne helpery będą miały do niego dostęp.
// Samo użcie banalne
print InternationalisationHelper
::translate('Hello world'); // mozesz oczywiście ukrócić nazwy, ale jak widzisz,, feel przypadku uzycia identy
zny prawie jak czystą funkcją
// ..i...
print HtmlHelper
::escape('<h1>Hello World</h1>');
// ...i...
// http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.flashmessenger
print FlashMessage
::read('error'); // uzywa sesji, do której mozesz sie dostac poprzez np. self::$context->getSessionManager()
?>