hymm
przytocze Ci 2 przyklady :
pierwszy - piszesz program do mnożenia dwóch składników przez siebie - gdzie skladnik moze byc albo liczbą albo macierzą...
wiec musisz zobaczyc czy pobrane A i B as macierzami czy intami nastepnie napisac metody Mnoz_maciez() i mnoż_calkowita() w zaleznosci od tego jakiego typu sa pobrane zmienne...
Natomiast jesli mozesz korzystac z przeciazania (co okazalo sie w PHP4 niemozliwe) to :
piszesz metode mnoz w mniej wieej taki sposob (kod poglądowy) :
<?php
function Mnozenie($maciezA, $macierzB) // tu argumenty sa typu Macierz (!)
{
// tu algorytm mnozenia macierzy
}
function Mnozenie($calkowiteA, $calkowiteB)
{
// tu algorytm mnozenia calkowitych
}
?>
teraz starczy ze wywolasz metode
mnozenie($podaneA, $podanB) kompilator sam powinien rozpoznac typy zmiennych - jesli beda to macierze to wywola algorytm dla macierzy - jesli integery - bedzie algorytm dla intów
Jak wlasnie pisalem dobrym przykladem jest tworzenie miniaturek - czaem potrzebujemy zeby skrypt zapisal nam plik jpg gdzies na dysku (wtedy podajemy go w sciezce docelowej) czasem potrzebujemy by tylko "wywalil go na ekran" zeby wstawic w tag <img>
moglibysmy skostruowac takie przeciazenie metody Miniatura():
<?php
function Miniatura($sciezka _do_zdjecia,$szerokosc)
{
// tu nie podano docelowego pliku dla miniatury - znaczy mamy ja wywalic na ekran
}
function Miniatura($sciezka _do_zdjecia,$szerokosc,$sciezka_docelowa)
{
// mamy inny zestaw parametrow wiec wykonujemy inna akcje - tu generowanie miniatury + zapis jej do pliku
}
?>
Jak widac na ponizszym przykladzie jest to tworzenie jakby "alternatywnych wersji" metod o tych samych nazwach - w zaleznosci od parametrow metody (nie tylko od ich typu ale także ilosci !) wywoływana jest odpowiednia metoda.... glownym powodem dla ktorego w php nie ma przeciazania jest to ze typy zmiennych sa slabo akcentowane - jednakze myslalem ze metody mozna przeładować korzystając z ilosci podawanych do nich parametrów....