![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Piszę wtyczkę do popularnego CMS'a i korzystam w niej z kodu biblioteki SOAP. Jednak pewnego razu natrafiłem na taką konfigurację tego CMSa że była już tam inna wtyczka korzystająca z tej samej biblioteki. Co się stało? Otóż CMS najpierw wczytał moją wtyczkę i wszystkie klasy/metody/funkcje z biblioteki SOAP którą włączam do wtyczki przez require_once(); a potem przechodząc przez kod pozostałych wtyczek natrafił na następny includ tej samej biblioteki (już w innej wtyczce) i dostałem komunikat:
Jak mam zmodyfikować kod mojej wtyczki żeby nie gryzła się z innymi wtyczkami używającymi tej biblioteki? Myślałem o przestrzeniach nazw ale będą one dopiero od php 5.3 a jeśli moja wtyczka ma być kiedyś popularna powinna działać też ze starszymi wersjami php. Ręczna zmiana nazw klas i metod też raczej nie wchodzi w grę bo biblioteki SOAP ma ok. 9000 linii kodu więc trudno byłoby wszystko przeedywać. z góry dziękuję za pomoc. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
http://php.net/function_exists
Daj jej deklaracje w ifa ktory sprawdza czy funkcja istnieje. Jezeli nie to ja deklaruje. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
jak już pisałem najpierw są deklarowane funkcje z biblioteki w mojej wtyczce więc nie ma sensu dawać tam warunku bo w momencie parsowania mojej wtyczki te funkcje nie są zadeklarowane.
problem pojawia się podczas parsowania innych wtyczek, których autorzy nie używali funkcji function_exist ale ja już nie mam na to wpływu niestety |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Myślałem o przestrzeniach nazw ale będą one dopiero od php 5.3 a jeśli moja wtyczka ma być kiedyś popularna powinna działać też ze starszymi wersjami php. Przyjęło się, żeby stosować konwencję function wtyczka_metoda(), jeśli pisane strukturalnie. Cytat Jak mam zmodyfikować kod mojej wtyczki żeby nie gryzła się z innymi wtyczkami używającymi tej biblioteki? Naprawić błąd popełniony przez Ciebie na początku - traktowania skryptu jako "własności" (patrz: wyżej). Jak zmodyfikować? Dodaj sobie prefiks do metod. Cytat Ręczna zmiana nazw klas i metod też raczej nie wchodzi w grę bo biblioteki SOAP ma ok. 9000 linii kodu więc trudno byłoby wszystko przeedywać A mało to edytorów z funkcją zamiany wg wyrażeń regularnych? -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 22:01 |