![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
index.php
plik lang.class.php
Ten post edytował szczypior 12.08.2016, 13:00:46 -------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Komentarze zaczyna sie poprzez
// a nie ' Twoj kod z obiektowka nie ma zadnego zwiazku - przenosze. Trzymanie jezyka w sesji czy w ciachu to nieporozumienie. Jezyk ma byc w url, najlepiej w ladnym url. I tak strona pl moze wykladac tak: http://mojastrona.pl/ zas wersja angielska juz tak: http://mojastrona.pl/en/ Odpalaj swoj kod na wlaczonym wyswietlaniu wszystkich bledow ps: 'lang/pl.lang.php' czy naprawde plik z jezykiem, ktory lezy w katalog LANG musi miec jeszcze sufix LANG? Czyz nie jest to dosc oczywiste z faktu ze lezy w katalogu LANG i ma nazwe PL czy EN ? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za opinię.
Dlaczego uważasz, że nie jest on w ogóle obiektowy? Co powinienem zmienić, żeby go "uobiektowić"? -------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Wsadzenie kawalka kodu w klase, a tak naprawde w konstruktor, nie czyni z niego OOP tylko poprostu kod w klasie
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czego brakuje temu kodowi, by faktycznie był obiektowy?
Wszystko jest w konstruktorze, bo ta klasa wydawała mi się na tyle mało rozbudowana, że nie potrzebuje dodatkowych funkcji. Jak mniemam, myliłem się ![]() Będę bardzo wdzięczny za sugestie ![]() Abstrahując od tego, że faktycznie zmianę języka można rozwiązać w lepszy sposób (tak jak sugerujesz przez htaccess), to czy możesz wskazać kierunek, jak należałoby poprawić ten kod, by stał się obiektowym. Czy właśnie należałoby go podzielić na funkcje? Z góry dzięki za odpowiedź ![]() Ten post edytował szczypior 12.08.2016, 13:13:20 -------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Wybacz, moze troche wprowadzilem cie w blad.
OOP - Object Oriented Programming W dziale OOP zajmujemy sie (a przynajmniej powinnismy) troche bardziej powazniejszymi sprawami jak klasa, ktorej jedyne zadanie to ustawienie jezyka na podstawie parametru w GET. To z OOP nie ma o tyle zwiazku, ze tutaj zastosowanie klasy nic nie w nosi. Od kod strukturalny wlozyles w klase. Zasadza dzialania kodu sie nie zmienila. Na chwile obecna masz klase, masz obiekt - starasz sie pisac obiektowo a nie strukturalnie - to juz cos. Nie mniej jednak wypadaloby sie troche zapoznac z roznymi konwencjami, np PSR i nazewnictem klass i plikow klas. Ot prosty przyklad: Twoj plik z klasa nazywa sie lang.class.php a sama klasa lang_set 1) wyrzuc class z nazwy pliku 2) Plik ma sie nazywac tak samo jak klasa 3) plik Lang.php, klasa Lang Jak zaczniesz lekture PSR to wpadniesz na cos takiego jak autoload - przydatne cudo ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
W samej klasie masz co najmniej kilka funkcjonalności. Pierwsze to przekazanie i odczyt wartości języka. Tu dodatkowo jeśli byś miał 20 języków to taki switch mocno by sie rozrosł. Nie można z tej klasy wyciągnąć bieżącej wartości języka. Drugi to adapter storage który akurat jest sesją domyślną ale gdybyś chciał zmienić na jakiś komponent zewnętrzny wtedy cały kod jest do przepisania a nie tylko dany fragment. Dodatkowo na sztywno czas sesji którego nie można zmienić przez konfigurację. O fatalnym nazewnictwie nospor już pisał.
-------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 428 Pomógł: 77 Dołączył: 10.07.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Możesz coś podobnego przekminić, wydziel logikę odpowiedzialną za "sprawdzenie" języka gdzieś na zewnątrz, dispatchuj event na zmianę języka. Opcji są miliony Cytat gdy użytkownik ma ciasteczko to odczytujemy zapisany w nim język i zapisujemy dodatkowo do zmiennej sesyjnej Wywal to do osobnego obiektu, który w razie potrzeby odpali na klasie Lang, z założenia Lang nie musi wiedzieć kto, skąd i po co zmienia język, ma to tylko ogarnąć po swojej stronie i tyle (plus ewentualnie powiadomić jakimś eventem że zmiana miała miejsce) Cytat gdy mamy zmienną, to znaczy że użytkownik chce zmienić obecny język Może abstrakcja, ale... co jeżeli pewna część kontentu będzie w innym języku? W teorii muszę utworzyć nową instancję klasy Lang po to, żeby w tym momencie ten język zmienić? Cytat Może potraktuj tłumaczenia (zakładam strukturę key=>value) raczej jako config? W sensie *.ini, *.yml, xml itd. Dodatkowo, możesz napisać sobie coś w rodzaju Translatora, co za tym idzie... mówić mu aby tłumaczył klucze na uprzednio załadowanej konfiguracji języka. Do tego musisz oczywiście pamiętać o fallback'u - w momencie gdy dane tłumaczenie (klucz) nie istnieje. P.S. taki troche Symfony-way Ten post edytował kpt_lucek 13.08.2016, 02:55:57 -------------------- Cytat There is a Bundle for that Lukas Kahwe Smith - October 31th, 2014 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 72 Pomógł: 11 Dołączył: 8.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
![]() ![]() ![]() ![]() ![]() To nie JS.
@Down Huh, no rzeczywiście. Myślałem, że to zawsze jest błąd. Ale osobiście i tak odradzam stosowanie tego jako dwa słowa, bo przy klamrach działa, a przy dwukropkach nie, a elseif działa przy wszystkim. Ten post edytował IAmBoskiM 14.08.2016, 16:24:30 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
No to przecież else if jest równoznaczny z Twoim drugim kodem bez klamerek → http://php.net/manual/pl/control-structures.elseif.php
-------------------- ★Mój blog || Okiem krytyka★
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:16 |