PDA

View Full Version : مقاله: برنامه نویسی کنسول و دسکتاپ با PHP



Delphi Skyline
شنبه 23 شهریور 1387, 19:55 عصر
مقدمه ای بر اینترپریتر PHP :

همان طور که می دانید PHP یک زبان اسکریپتی و محاوره ای است یعنی برنامه هایی که با PHP می نویسید توسط یک اینترپریتر به طور Run-Time ترجمه می شود و اجرا می گردد . ولی مثلا موقعی که در زبان سی++ برنامه نویسی می کنید کامپایلر سی کد های شما را تجزیه و تحلیل می کند و به کد های ماشین یا همان 0 و 1 ها ترجمه می کند . پس در واقع PHP یک برنامه مد کاربر ساده می باشد که یک سری متن را می پذیرد و اعمالی انجام می دهد . مزایای زبان های محاوره ای مانند PHP در مدیریت منابع توسط خود اینترپریتر و سادگی برنامه نویسی و قابلیت حمل بالا بر روی پلت فرم های مختلف می باشد . مثلا در زبانی مانند PHP شما می توانید کدی را در یک رشته قرار داده و آنرا با دستور eval اجرا کنید . اینگونه توانایی ها به دلیل همین پردازش بلادرنگ (Run-Time) این گونه زبان ها می باشد . و اما معایب اینگونه زبان ها هم کم نیست : سرعت بسیار پایین نسبت به برنامه های ترجمه شده , کشف راحت سورس کد برنامه که تولید نرم افزار های تجاری را با اینگونه زبان ها مثل پرل مشکل می کند و قدرت کم اینگونه زبان ها می باشد (به دلیل عدم نظارت برنامه نویس بر روی سیستم – یعنی از دید برنامه نویس پایین ترین لایه سیستم توابع داخلی اینترپریتر می باشند) .

طریقه اجرای یک برنامه وب PHP :

طریقه اجرای یک برنامه PHP به این صورت است که شما که کلاینت می باشید به سایت مراجعه می کنید و مثلا درخواست عضویت در سایت می دهید . مرورگر وب اطلاعات شما را گرفته در صورت لزوم رمزنگاری کرده و به سرور سایت می فرستد . سرور این اطلاعات را رمز گشایی میکند و به PHP می فرستد . PHP اطلاعات را پردازش می کند و یک صفحه HTML تولید می کند که مثلا حاوی جمله "کاربر گرامی عضویت شما پذیرفته شد." است . این صفحه HTML از سرور به کامپیوتر شما فرستاده می شود . مرورگر شما این کد HTML را می خواند و نمایش می دهد . به اینگونه پردازش ها که در طرف سرور صورت می گیرد و شما فقط اطلاعاتی را می فرستید و نتیجه را دریافت می کنید Server Side processing می گویند . پس PHP یک زبان سمت سرور یا Server Side می گویند . و اما اینترپریتر PHP کمی با حوصله نوشته شده است . شما می توانید بدون اینکه خروجی HTML توسط کد های PHP تولید کنید یک خروجی کنسول داشته باشید . یعنی یک برنامه کاربردی کنسول با PHP بسازید . در این مقاله قصد داریم تا نحوه ی ایجاد یک برنامه کنسول را در PHP بررسی کنیم .

پیش به سوی برنامه نویسی تحت ویندوز باPHP :

خوب اولین چیزی که نیاز داریم PHP است . PHP را روی سیستم خود نصب کنید .

در فولدر PHP یک فایل به نام PHP.EXE یافت می شود . بله درست حدس زدید این همان اینترپریترPHP است . خوب حالا توسط Command Prompt این برنامه را اجرا می کنیم :

C:\>php
اینترپریتر اجرا می گردد . برنامه خروج از اینترپریتر Ctrl+C را می زنیم .

خوب حالا یک فایل PHP با محتویان زیر ایجاد می کنیم و به اسم HelloWorld.php ذخیره می کنیم :



<?php
Print(“Hello World!”);
?>

خوب حالا می خواهیم این برنامه را توسط اینترپریتر اجرا کنیم . پس می نویسیم :



C:\>php helloworld.php
حالا خروجی Hello World! را در کنسول مشاهده می کنید (یک برنامه کاربردی دسکتاپ) !!!!

از نسخه 4.2PHP به بعد برنامه های باینری به جای اجرا برای CGI برای CLI اجرا می شوند با اینکه اینترپرتر هر دو یکسان است . نسخه CLI شامل تغییرات و اضافات زیر است :

هیچ هدر HTTP در خروجی چاپ نمی شود .

پیام های خطا شامل فرمت بندی HTML نمی شود .

مقدار max_execution_time برابر صفر شده است . یعنی اسکریپت تا هز زمانی می تواند اجرا باشد . برای آگاهی از CGI یا CLI بودن PHP باید از آرگومان –v به شکل زیر استفاده کنید :

C:\>Php –v

که خروجی مانند زیر خواهد داشت :




PHP 5.0.3 (cli) (built: Dec 15 2004 08:07:57)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.3, Copyright (c) 1998-2004 Zend Technologies



همان طور که مشاهده می کنید این نسخه cli است . نسخه CGI به نام php-cgi.exe در پوشه اصلی php موجود می باشد .

خوب به Hello World! بر می گردیم .

هشدار : در برنامه های کنسول دیگر شما نمی توانید از تگ های HTML استفاده کنید .

در اینجا توابع ورودی و خروجی را بررسی می کنیم .

برای چاپ یک استریم در کنسول از دستور fputs استفاده می کنیم(البته دستور print و echo هم کاربرد دارند ولی برای کار با استریم نیستند ) .

برای دریافت استریم از ورودی از تابع fgets استفاده می کنیم .

پارامتر های دستورات fputs و fgets :

ثابت ها : STDIN , STDOUT , STDERR
هویت ها : php://stdin , php://stdout , php://stderr
استریم ها : standard input , standard output , standard error


خوب حالا یک مثال را بررسی می کنیم :




<?php
Print(“welcome to first PHP Application!”);
while (!feof(STDIN)){
$input = fgets(STDIN);
fputs(STDOUT , strtoupper($input));
}

?>



این کد ورودی را از کاربر میگیرد و ورودی را توسط تابع strtoupper حروف بزرگ می کند و سپس در خروجی چاپ می کند .

حال می خواهیم به معرفی تابع جالب system در PHP بپردازیم . توسط این تابع شما می توانید یک فایل را اجرا کنید !!!

خوب حالا برنامه ای می نویسیم که نخست مسیر یک فایل را از کاربر می گیرد و سپس آنرا اجرا می کند .




<?php
Print(“Enter file path :\n”);
$input = fgets(STDIN);
system($input);
?>



خوب برنامه را اجرا می کنیم . ورودی را c:\a.exe می دهیم . برنامه ما فایل a.exe را از دیسک c اجرا می کند .

آرگومان های ورودی :

آرگومان ها در برنامه های کنسول به پارامتر هایی گفته می شود که موقع برنامه وارد می کنید . مثلا :

C:\>php helloworld! First program
هر آرگومان توسط خط فاصله از هم جدا می شود . به عنوان مثال آرگومان های خط بالا به این صورت هستند :


Arg[0] = helloworld!



Arg[1]=First



Arg[2]=program


برای دستیابی به این آرگومان ها در PHP از آرایه $argv استفاده که هر عنصر از آن یک آرگومان ورودی است می کنیم .

مثال : برنامه ای که آرگومان های ورودی را به ترتیب چاپ می کند :





<?php
$count = 0;
for($count = 0 ; $count < count($argv) ; $count++){
print($argv[$count]);
print("\n");
}
?>



PHP و تولید برنامه های دسکتاپ :

PHP-GTK نام کتابخانه ای است که شما می توانید به واسطه آن توسط تولکیت GIMP Window یا همان GTK+ به تولید برنامه های دسکتاپ کراس پلت فرم با عناصر ویژوال (مانند فرم ها و دکمه هت و منو ها و کشیدن و رها کردن آنها ...) بپردازید .

برای اطلاعات بیشتر راجع به پروژه PHP-GTK و دریافت این پروژه به سایت http://gtk.php.net (http://gtk.php.net/). مراجعه کنید .