24 Eylül 2008 Çarşamba

Konsolda php & ncurses

Bi arkadaşım php ile konsol programı yazmış, ms-dos tadında çalışan bi program. Bu işle ilginenler sanır ki php sadece web programlama için kullanılıyor, fakat php öyle yetenekli bir dildir ki pek çok platformda çalışır, web üzerinde, konsolda, dosta ve masaüstünde. Buyur size taze taze, sıcak sıcak php ile konsol programlama örneği :) Aşağıda kodları verilen programcık linux altında yazılmıştır. Konsol kütüphanesi olan ncurses kullanmaktadır ve kodun tamamı php dilindedir. ASP yada alternatif web programlama dillerine eğilimi olanların şiddetle göz önüne alması gereken, php nin gücünü gösteren bir örnektir. Kodun yazarı şimdilik isminingizli tutulmasını talep ettiği için isminin yayınlanmasını istemiyor. Ve kod herhangi bir iş yapmamakta olup, php nin ve linuxun teknik yönü hakkındaki bir araştırma amacıyla yazılmıştır.

#!/usr/local/bin/php
<?php
define("ESCAFE_KEY",27);
define("ENTER_KEY",13);

$menum=array("Sorgu Yap", "Goruntule", "Baglan","Bilgi Al", "Cikis");

ncurses_init();
$main_window=ncurses_newwin(0, 0, 0, 0);
ncurses_getmaxyx($main_window, &$w, &$h);
ncurses_border(0,0, 0,0, 0,0, 0,0);
$low_window=ncurses_newwin(10, $h-2, $w-11, 1);
$top_window=ncurses_newwin(11, $h-25, $w-23, 1);
$left_window=ncurses_newwin(12, $h-60, $w-23, 58);
ncurses_wborder($top_window,0,0, 0,0, 0,0, 0,0);
ncurses_wborder($low_window,0,0, 0,0, 0,0, 0,0);
ncurses_wborder($left_window,0,0, 0,0, 0,0, 0,0);
ncurses_refresh();
ncurses_attron(NCURSES_A_BOLD);
ncurses_addstr("Konsol Programlama yapalim");
ncurses_attroff(NCURSES_A_BOLD);
ncurses_mvwaddstr($low_window,2,2,"Alt cerceveye kodugum yazi:)");
ncurses_wrefresh($low_window);
ncurses_wrefresh($top_window);
ncurses_wrefresh($left_window);
while(1){
if($seç==""){ $seç=0;}
for($a=0; $a<count($menum); $a++){
$out=$menum[$a];
if($seç==intval($a)){
ncurses_wattron($left_window,NCURSES_A_REVERSE);
ncurses_mvwaddstr($left_window,1+$a,1,$out);
ncurses_wattroff($left_window,NCURSES_A_REVERSE);
}

else{
ncurses_mvwaddstr($left_window, 1+$a, 1, $out);
}}

$pres=ncurses_getch($left_window);
ncurses_wrefresh($left_window);

if($pres==NCURSES_KEY_UP){
$seç=$seç-1;
if($seç<0){ $seç=0; }
}elseif($pres==NCURSES_KEY_DOWN){
$seç=$seç+1;
if($seç>=count($menum)){ $seç=count($menum)-1; }
}


if($pres==NCURSES_KEY_LEFT){

# $cikti= exec("ping -c 5 10.0.0.5");
$cikti= exec("uname -a");
$dizi=explode(" ",$cikti);
# while(list($key,$val)=each($dizi)){
for($k=0; $k<=count($dizi); $k++){
ncurses_mvwaddstr($top_window, 1+$k, 1, $dizi[$k]);
# ncurses_mvwaddstr($top_window, 1+$k, 1, $key."-".$val);
# $a=$a+1;
}
ncurses_wrefresh($top_window);
}

if($pres==ESCAPE_KEY){
ncurses_end();
exit;
}
}
?>

marabayın

Marabayın blogcular, bundan sonra ben de buradayım :)