Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Nadpisanie funkcji natywnej - możliwe?
Forum PHP.pl > Forum > PHP
lukasamd
Witam,
mam nieco dziwne pytanie choć szczerze spodziewam się tylko jednej, negatywnej odpowiedzi.

Czy istnieje możliwość nadpisania wbudowanej w php funkcji?
Przykład z życia - jest skrypt wywołujący np. addslashes w wielu miejscach.
Chciałbym zmienić jego działanie / coś dodać. Z tym, że bez edycji wielu plików.

W wypadku oop o ile dobrze wiem w takich wypadkach tworzy się adapter, ale co, gdy chodzi o zwykła, do tego natywną funkcję?
Blame
Czyli napisanie własnej funkcji i wrzucenie jej do pliku a potem dołączanie include arbo require odpada? Wtedy to tylko jeden plik do edycji.
lukasamd
Rzecz w tym, że ta funkcja (przykład wyżej addslashesh) została już użyta wielokrotnie w wielu plikach całego projektu.
Include / require jak najbardziej mogłoby zostać wykonane. Można by nawet tą funkcję zdefiniować w głównym pliku projektu, ale nie na tym problem polega - chodzi o nadpisanie działania addslashes.
#luq
Wszystkie funkcje PHP są napisane w C, całość jest do ściągnięcia (http://php.net/downloads.php) i jeśli by zmienić definicje funkcji addslashes(), skompilować podmienić w Apache to powinno chyba dać radę, czysto teoretycznie (bo praktycznie tego nie robiłem) z moich informacji wynika, że da się. Tylko oczywiście na serwerze musisz mieć możliwość podmiany samego PHP = dedyk.
batman
override_function
Crozin
Hmm... a dlaczego po prostu nie wykorzystasz czegoś takiego jak "Znajdź i zamień" (addslashes -> myAddslashes) na wszystkich plikach projektu? Nadpisywanie natywnych funkcji to baaaardzo słaby pomysł.
lukasamd
@#luq:
Różne środowiska, brak takiej możliwości.


@Crozin:
Projekt bazowy może zostać co najwyżej rozwinięty, nie może zostać zmieniony, w tym problem.


@batman:
Wypróbuję - mam jednak pytanie - czy strata wydajności jest duża przy czymś takim?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.