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";
}
.......
............
?>
Serkan Hadi Ceylani
serkan@turk-php.com
Kaynak:ISBN 0-672-31924-1
|