PHP SOAP geliştirme için ufak bir tüyo

Merhabalar,

PHP de WSDL üzerinden geliştirme yapıyorsanız, bilmeniz gereken küçük bir ayrıntı var : PHP hızdan kazanmak için, wsdl dosyanızı cacheliyor. Bunun için de uzun sayılabilecek bir timeout süresi belirliyor.

Bu durumda siz developmentta wsdlleri değiştiriyorsunuz ama hedefte bir değişiklik göremiyorsunuz. Sinir krizi eşiklerine gelebilirsiniz, benden söylemesi.

Çaresi çok basit, php.ini den wsdl cachelemeyi kapatmanız yeterli. Ayar şu şekilde :

soap.wsdl_cache_enabled=1

Bunu 0 yaptınız mı artık kafanız rahat : )).

Herkese iyi geliştirmeler!

PHP – Değişken Fonksiyonlar

Herkese merhaba,

Uzun bir aralıktan sonra tekrar yazma fırsatı buldum. Evet eve hırsız girdi ve herşeyi altüst etti ama bizler tekrar ayağa kalkmaya başladık. Uzun aradan sonra da sizlerle bu yazıda teknik bir konuda konuşmaya karar verdim. Yazıda konuşmak.. hmm.

Evet başlayalım. PHP bildiğiniz gibi dinamik olduğu iddiasında olan bir betik yüksek seviye fonksiyonel ve aynı zamanda nesneye yönelimli bir dil(birilerinin burnuna kötü kokular geldi mi?). Bu dilin enteresan özelliklerinden birisi de metod isimlerinin de değişkenler gibi değişebilmeleri ve bunların istenildiği zaman çağrılabilmeleri. Tek yapmanız gereken fonksiyon/metodun ismini bir değişkene atamak ve daha sonra o değişkenin sonuna parantezleri yerleştirmek. Aşağıdaki örneğimize buyrun..


public function baseMethod(){
$db = DBOperation::getInstance();
try

{

$array_len = func_num_args();

if( $array_len == 0){

throw new Exception();

}

$args = func_get_args();



$function = $args[0]; //first param is always the functionname

$parameters = array();



for($i = 1; $i < $array_len ; $i++){

$parameters[] = $args[$i];

}

$this->$function($parameters, $db);

}

catch(WJException $e){

echo json_encode(array("returnValue"=>"false", "error" => $e->error()));

return false;

}

}

Burada bir kaç numara durum var, bunlardan birincisi func_num_args fonksiyonu. Bu fonksiyon size o anki metodunuza/fonksiyonunuza kaç adet parametre geçildiğini bildiriyor. İkincisi ise func_get_args fonksiyonu, bu fonksiyon da bize geçilmiş olan parametreleri bir dizi şeklinde dönüyor. Aslında PHP ne kadar garip bir dil değil mi? Çok basit bir şekilde bizler de count fonksiyonunu çağırıp, metodumuza geçilmiş parametre sayısını bulabilirdik. Ama neyse yazmış adamlar işte: ). Biz bu sayede parametre listesini boş dahi bıraksak, istediğimiz kadar parametre geçebiliyoruz istediğimiz fonksiyona.

Bu metotta, çağırılacak olan metod ismi ve parametreleri dışardan alınıyor ve tamamen kendi seçimimize kalmış durumda. Mesela bu metodu artık şu şekillerde kullanabiliriz.


$this->baseMethod("getMoreSpecificMessages", $_POST['username'], $_POST['lastDate']);

$this->baseMethod("readMessage", $receiver->getId(), $_POST['readMsgId']);

Görüldüğü gibi istediğimiz metodu istediğimiz parametrelerle çağırabiliyoruz. Tabii bu uygulamada bunu neden yaptık diye sorarsanız, söz konusu sınıfımızın çoğu metodunda benzer işlemler yapılıyor, metodun ortasında küçük bir kısımda ise metoda özgü hareketler oluyordu. Bu durumda DRY prensibine uyalım dedik ve ortak olan hareketleri tek noktada topladık. İçeriden de o anki işimize özgü metodumuzun çağrılabilmesi için de bu yapıyı kurduk. Aslına bakarsanız çok mu güzel oldu bu yapı? sorusuna şu an için cevap veremiyorum. : ) Onu da başka bir zaman tartışırız. Herkese iyi çalışmalar!