PHP Ustalarina Soru(Fonksiyonlarla Alakali)
-
merhabalar.yapmaya calistigim seyin adinida bilmedigim icin aratamiyorumda.yapabilirsem isim hayli kolaylasicak soyle anlatayim
danga diye bir fonksiyon yazicam javada ayni fonksiyonu farkli parametrelerle istedigin kadar yazabiliyosun sonra parametreye gore uygun fonksiyon calisiyo ama bunu phpde yapmak istiyorum bir ornekle:
function insert($id,$name){ //2 parametre varsa bu calissin } function insert($id,$name,$active){ //3 parametre varsa bu calissin vs vs vs... }
bu olayin adini bilen ?yada phpde nasil yapildigini bilen varsa cok makbule gecer kendisinin yardimlari -
öyle değil de:
insert($id,$name,$active=FALSE) dersin, eğer kullanıcı active değerini girmezse false olarak gelir sana sen de içerde $active false ise şunu yap, değilse (kullanıcının 3 parametreyi de girdiği analamına geliyor) şunu yap diyebilirsin.
-
PHP bilmiyorum fakat kodlama mantığından yardımcı olabilmek için şunu söyleyebilirim.
function insert($id,$name,$active) {
if($active) {
//3 parametreli kodlar buraya
}
else {
//2 parametreli kodla buraya
}
}
-
Cok sevdigimiz stackoverflow dan bir cevap. Fonksiyon yap 1 tane, ona istedigin kadar parametre yolla, asagidaki func_num_args la filan sayisini bul, switch case ile, dogru adette parametresi olan fonksiyonu cagir. Ne bileyim test se asil fonksiyon case lerde test1Parametre() test2Parametre() falan gibi farkli fonksiyonlar cagir.
If you want to overload a function like in Java, don’t specify any arguments and use the
func_num_argsandfunc_get_argsfunction to get the number of arguments or the arguments themselves that were passed to that function:function test() {
$args = function_get_args();
swtich (count($args)) {
case 1:
// one argument passed
break;
case 2:
// two arguments passed
break;
default:
// illegal numer of arguments
break;
}
} -
PcK0 bunu yazdı:
-----------------------------
PHP bilmiyorum fakat kodlama mantığından yardımcı olabilmek için şunu söyleyebilirim.
function insert($id,$name,$active) {
if($active) {
//3 parametreli kodlar buraya
}
else {
//2 parametreli kodla buraya
}
}
-----------------------------öyle değil de:
function insert($id,$name,$active=FALSE) {
olması lazım hocam öbür türlü parametre eksik hatası verir.
-
SpArK bunu yazdı:
-----------------------------Edit
-----------------------------
mesajini gordum cevap yazdim http 500 hatasi verdi gitti.evet aradigim sey function overloading ve phpde olmuyomus malesef.simdi benim amacim su.bi sql cumlecigi olusturucam ve birden fazla secenek var soyle dusun bi textbox, 3 tanede combobox olsun(ki su an ugrastigim sey cok daha fazlasi) bunlardan girilen verilere gore arama yaptirmam lazim oldukca fazla ihtimal var if else ... diye tek tek eleyemiyorum malesef.yada sqlde kullanabilecegim etkisiz eleman gibi bisey varmiki (hic duymadim ama) formdan gelen veriler bossa onu yazdirayim yerine sonucu hic etkilemesin. select name,perm from agac where armut = ggg' de ggg yerine ne yazsam sql armutu dikkate almadan tum tabloyu secer??? -
ggg yerine 1 OR 1 = 1 yazmayı dene :S
Edit: Sql i, prosedüre parametre göndererek mi kullanıyorsun yoksa sql sorgusunu dinamik mi oluşturuyorsun?
-
KURN44AZ bunu yazdı:
-----------------------------ggg yerine 1 OR 1 = 1 yazmayı dene :S
Edit: Sql i, prosedüre parametre göndererek mi kullanıyorsun yoksa sql sorgusunu dinamik mi oluşturuyorsun?
-----------------------------
dinamik kullaniyorum.acikcasi pek sql tecrubemde yok :| -
function insert($id,$name,$active=null){
if(empty($active)){
//2 parametre
}else{
//3 parametre
}
}
edit: ilk mesajına göre yazmıştım 2. mesajını okumamışım
-
bokkafa bunu yazdı:
-----------------------------
merhabalar.yapmaya calistigim seyin adinida bilmedigim icin aratamiyorumda.yapabilirsem isim hayli kolaylasicak soyle anlatayim
danga diye bir fonksiyon yazicam javada ayni fonksiyonu farkli parametrelerle istedigin kadar yazabiliyosun sonra parametreye gore uygun fonksiyon calisiyo ama bunu phpde yapmak istiyorum bir ornekle:
function insert($id,$name){ //2 parametre varsa bu calissin } function insert($id,$name,$active){ //3 parametre varsa bu calissin vs vs vs... }
bu olayin adini bilen ?yada phpde nasil yapildigini bilen varsa cok makbule gecer kendisinin yardimlari
-----------------------------O olayın adı polymorphism. Object Oriented Programming'in 3 temel taşından bir tanesi. (Diğerleri encapsulation ve inheritance). "Overloading methods" diye aratırsan bolca sonuç çıkar sanki.
-
hocam tam olarak bahsettiğin olayın adı method overloading... yani bir fonksiyonu aşırı yükleme... aynı isimle birden fazla fonksiyon yazarsın... Sen çağırırken komut senin istediğine göre gelir.
arkadaşın dediği gib polymorphism in bir alt şeklidir ve oop nin 3 temel taşından birisidir. PHP 5 ile destekliyor olması lazım.
