Problem:Bir degisken icin "ongorulen" bir deger atamak istiyorsunuz.Fakat bu oyle bir sey olmali ki eger kullanici bir seyler girip yollamis ise kullanicinin degeri goz onune alinmali...
Cevap:Bu durumda "ternary operatoru" olarak isimlerndirilen ?: yazim seklini kullanabilirsiniz.(Tabi ki her zaman icin if else yapilari kullanilabilir ama bu operator ile hem kodun okunabilirligi artiyor hemde ozgun bir yazilim saglaniyor.)
durum ? dogru_ise_bunu_yap : yanlis_ise_bunu_yap
<?php
/*
Eger kullanici ilk argumenti($dosyaadi) saglamis ise o kullanilacak degilse ongulen olarak STDIN (php://stdin) alinacak.(STDIN hakkinda daha fazla bilgiyi manualden alabilirsiniz.)
*/
$dosyaadi = isset ($arg[1]) ? $arg[1] : "php://stdin";
$dosyabaglantiac = @fopen ($dosyaadi, 'r') or die ("Dosya okumak icin acilamiyor");
while (!@feof ($dosyabaglantiac)) {
$satir = @fgets ($dosyabaglantiac, 1024);
print $satir;
}
@fclose ($dosyabaglantiac);
?>
Yukaridaki kod grubu icin anlamayanlara bir kez de bilinen klasik yontemle programi yazarak gosterelim.Ilk satirimizdaki kod icin bilinen if ve else yapilarini kullaniyorum.
<?php
if (isset ($arg[1])) {
$dosyaadi = $arg[1];
} else {
$dosyaadi = "php://stdin";
}
.......
............
?>
Hiç yorum yok:
Yorum Gönder