![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 3 Dołączył: 29.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Niżej znajduje się fragment który jest odpowiedzialny za podmianę ciągów znaków na ciągi podane przez zmienną bądź wpisane bezpośrednio przez programistę. Chodzi o to że skrypt jest dość mało czytelny gdy stosuje go w kilku miejscach i chciałem go przerobić na wersję obiektową, ale tak bym mógł dodawać nieograniczoną ilość elementów do podmiany.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 291 Pomógł: 45 Dołączył: 21.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Na wstępie odesłałbym do manuala funkcji str_replace. Dlaczego?
Przykład z php.net:
Robi dokładnie to samo co chcesz bez pakowania się w foreach'a. Faktem jest, że przyjmuje ciut inny sposób rozpisania tablic, ale kończy się tym samym. OOP to średnio z tego wyjdzie, ale kawałek funkcji na pewno. Funkcja z 3 parametrami wymaganymi. 1 - tablica, 2 - tablica, 3 - łańcuch znaków. Na początku sprawdzasz czy pierwsze dwa są tablicami, a 3 łańcuchem znaków i czy plik przez niego wskazywany istnieje. Jak warunki spełnione robisz str_replace'a w/g danych przesłanych przez parametry funkcji. Dobrze zrozumiałem Twoją koncepcję? |
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 3 Dołączył: 29.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak, ale mając dwie tablice (jak pokazałeś wyżej) muszę pilnować kolejności i przy wielkiej ilości na przykład zmiennych zacznie się robić nieczytelny, czy raczej trudny do odczytania kod.
Kod naskrobany prze zemnie jest może mało wydajny przy większych plikach, ponieważ musi zasysać ciąg znaków tyle razy ile jest elementów w tablicy (a przy dużym ciągu może to męczyć skrypt), ale staram się te elementy rozbijać i zapisywać w "cache"; z drugiej strony umieszczając cały czas ten sam kod w kilku miejscach zaczyna się też robić ciasny natłok i chcąc kiedyś to zmienić muszę latać po wszystkich plikach. Mi chodzi o to by przekazywać wartości do class-y w postaci:
dokładanie nie wiem jak to zrobić, ponieważ wszystko piszę strukturalnie, a zaczynam przesiadać się na OOP - chcę doprowadzić całość do czytelnej postaci. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 291 Pomógł: 45 Dołączył: 21.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
W sumie nie musisz, aż tak pilnować kolejności.
To co zapisałeś w przykładzie jest analogiczne do:
Mówiąc szczerze nie widzę sensu budowania całej klasy dla potrzeb kilku replacementów w łańcuchu znaków. Jak dla mnie to nadal jest funkcja (w klasie operującej na ciągach znaków - jak najbardziej). Możesz przekazać całą taką tablicę jako jeden parametr i wewnątrz próbować pociachać ją za pomocą array_keys i array_values, następnie spłaszczyć i potraktować tekst preg_replace'm. -- Może to takie przyzwyczajenia z frameworka - ale wszystko da się zrobić. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 3 Dołączył: 29.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Już zrobione wszystko ładnie działa...
Dzięki za wskazówki ![]() Ten post edytował ksenonlogin 5.08.2012, 15:56:55 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 11:20 |