Witam
Co oznacza taki zapis :
__('Jakiś string')
Domyślam się, że ma to związek z jakąś magiczną metodą PHP, ale jaką i po co się to używa?
Witam
Co oznacza taki zapis :
__('Jakiś string')
Domyślam się, że ma to związek z jakąś magiczną metodą PHP, ale jaką i po co się to używa?
@Demonical Monk:
Mu chyba chodzi o coś innego. O funkcję globalną o nazwie "__", przyjmującą jeden argument typu string. Mnie to śmierdzi aliasem na funkcję gettext (http://pl.php.net/manual/en/function.gettext.php). Nie wiem, czy zastosowano konkretnie moduł gettext, czy jakiś inny, ale służy to prawdopodobnie internacjonalizacji, czyli zapewnieniu obsługi różnych wersji językowych.
Funkcji __ podaje się jakiś napis w domyślnym języku, np. po angielsku. Potem tworzy się lokalizację. Np. w polskiej lokalizacji mówi się, że taki i taki angielski ma taki i taki polski odpowiednik. Gdy w programie ustawi się polską wersję językową, to jej tabela jest przeszukiwana i np. użycie __('ass') zwraca polskie tłumaczenie, czyli 'dupa' ;).
prawdopodobnie autor pytania zapomniał podać z jakiego frameworka używa ;)
Ja to znam z cake'a i faktycznie służy tam do lokalizacji (l10n).
Tak zobaczyłem takie coś w aplikacjach opartych na Kohana.
Dziękuję za odpowiedzi.
Nie chce zaczynać nowego tematu, ale mam jeszcze jeden problem z magią PHP.
Mam taki kod w kontrolerze nadrzędnym:
protected function model_instance($model_name, $id = NULL) {
if (! isset($this->$model_name)) {
$this->$model_name = ORM::factory($model_name, $id);
}
return $this->$model_name;
}
I jak teraz wykorzystać ten atut PHP, żebym nie musiał wywoływać jawnie tej metody, czyli jakoś tak:
$this->('model_name')
coś w tym stylu, chodzi żebym nie musiał ciągle klepać model_instance. Czytam o tym, ale nie rozumiem dalej jak to zrobić w przypadku dziedziczenia.
Myślę, że powinieneś przerobić jakiś konkretny tutorial Kohana. Jeśli przerobiłeś - spróbuj jeszcze raz.
Nie znam Kohana, ale zgaduję, że to będzie:
$this->ModelName
Nie to nie jest funkcjonalność wbudowana, ja chcę ją dodać, tylko nie wiem jak, chodzi o to żeby nie powtarzać wywołać ORM::factory itd
Ale dobra, muszę przeczytać jeszcze raz o magii w PHP.
Cała ta metoda model_instance to mój twór, chciałbym się pozbyć jawnych do niej wywołań właśnie po przez magię.
Normalnie wszyscy jadą tak: ORM::factory('model')
I tak dziesiątki razy w kontrolerze, ale co będzie jeśli zajdzie potrzeba zmiany ORM, na jakąś inną warstwę dostępu do danych?
No lipa po całości, wiele miejsc do zmiany, a jak tak nie chce. Poza tym wywołania model_instance też są wkurzające.
ok, czaję. Ja nie znam takiego tricku i mam wrażenie, że za bardzo wierzysz w magię php ;)
Nazwij sobie tą metodę jako "m" i
$this->m('model')
No właśnie też mam takie wrażenie z tą wiarą.
Dzięki za pomoc.