[PHP] pytanie o element składni

0

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?

0

@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' ;).

0

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).

0

Tak zobaczyłem takie coś w aplikacjach opartych na Kohana.

Dziękuję za odpowiedzi.

0

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.

0

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

0

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

0

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.

0

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')

0

No właśnie też mam takie wrażenie z tą wiarą.

Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1