TAHA
10-23-2009, 10:32 AM
امروزه با توجه به اينکه روز به روز بر تعداد ميزبانهايي که PHP رو ساپورت ميکنند افزوده ميشود ، صحبت در مورد PHP و قابليتهاي آن در ميان طراحان وب و برنامه نويسان زياد است.
براي کساني که فقط نامي از PHP شنيده اند و از تواناييها و مزيت هاي PHP آگاهي ندارند در اين مقاله PHP رو به طور مختصر شرح شرح ميدهم و آن را با اسکريپتهاي CGI مقايسه ميکنم.
PHP يک زبان طرف خادم (server side ) مي باشد و شما ميتوانيد براي ساخت صفحات ديناميک وب از آن استفاده کنيد. براي مثال مديريت و ساماندهي اطلاعات دريافتي از يک form اچتمل با PHP بسيار آسان است.
1- زبان:
اگر شما با زبانهاي C , C++ , Perl يا Java کار ميکنيد ياد گرفتن زبان PHP ميتواند مانند زنگ تفريح باشد! در واقع شما خيلي سريع ميتوانيد اسکريپت نويسي را با PHP شروع کنيد.
متغيرها در PHP مانند PHP هستند (با پيشوند $ ) و انواع مختلف داده ها را ميتوانند در خود ذخيره کنند. براي مثال $whatever ميتواند انواع داده ها شامل رشته اي ، عددي و غيره را در خود نگه دارد.
اگر مقدار $whatever يک عدد باشد شما ميتوانيد مقدار آن را اينگونه افزايش دهيد:
$whatever ++;
يا
$whatever =+1;
يا
$whatever=$whatever+1;
که دقيقا همان روشي است که در C ، C++ ، Perl يا Java به کار ميبرديد.
2- تسهيلات توکار (Built-in facilities )
بر خلاف Perl که يک زبان همه منظوره است و شما ميتوانيد تقريبا هر برنامه اي را با آن بنويسيد ، PHP از ابتدا با هدف اسکريپت نويسي براي صفحات وب درست شده ، از اينرو اسکريپت نويسي براي صفحات وب در PHP بسيار آسانتر از Perl مي باشد.
براي مثال ميخواهيم از يک فرم در يک صفحه وب ايميلي را به آدرس خودمان ارسال کنيم. به کمک Perl شما احتمالا کدي شبيه زير را مينويسيد :
open ( MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: myself\@mydomain.com\n" ;
print MAIL "From: visitor\@hisdomain.com\n" ;
print MAIL "Subject: Comments from Web Form\n\n" ;
print MAIL $mainmessage ;
close ( MAIL ) ;
اما همين برنامه در PHP به شکل زير نوشته مي شود :
mail ( "myself@mydomain.com", "Comments from Web Form",
$mainmessage, "From: visitor@hisdomain.com" );
خب حتما تفاوت اين دو زبان در سادگي و راحتي را متوجه شده ايد!
اين سادگي و رواني براي بقيه کارها هم صادق است ، مانند فرستادن يا بازيابي يک پرونده با FTP يا HTTP.
همانطور که گفته شد اين سادگي از اونجا ناشي ميشه که PHP فقط براي برنامه نويسي براي صفحات وب طراحي شده است.
تسهيلات ديگر آن در اداره کردن input هاي يک form مي باشد ، براي مثال يک فرم مانند زير را در نظر بگيريد:
<input
type=text name="dateofbirth">
شما خيلي راحت و سريع مي توانيد به محتويات اين فرم در متغير $dateofbirth دسترسي داشته باشيد. نيازي به تجزيه و تحليل input هاي فرم نيست.
تمام فيلد ها در يک فرم به طور اتوماتيک به متغيرهايي تبديل ميشوند که شما خيلي راحت ميتوانيد به آنها دسترسي داشته باشيد.
دسترسي به پايگاه داده ها هم به همين شکل اسان و راحت است. کار با پايگاه هاي داده مانند MySQL, MSQL, Dbase, Oracle, InterBase, از قابليتهاي ذاتي (Built-in) PHP است . PHP حتي براي رمزنگاري MIME هم تابعي در نظر گرفته است. قابليتها و تسهيلات PHP بسيار زياد است و طبيعتا ممکن نيست به همه آنها را در اين مقاله اشاره کرد.
اشاره به اين چند مورد هم فقط براي اين بود که تصميم شما را براي فراگيري PHP قاطع تر کنم!
3- ساخت صفحات وب :
يک صفحه PHP ميتواند شبيه کد زير باشد :
<html>
<head><title>My First PHP Script</title></head>
<body>
<h1>My First PHP Script</h1>
<p>
Welcome, Internet user from IP address
<?echo $REMOTE_ADDR?>. Hope you like my first
PHP page.
</body>
</html>
توجه کنيد که اين دقيقا شبيه source صفحات وب مي باشد مگر در موارد که دستورات PHP را شامل مي شوند. اين کد آدرس IP بيننده صفحه را مينويسد ، براي همين از دستور echo استفاده کرده ايم . متغير محيطي وب سرور (environment variable) REMOTE_ADDR به صورت اتوماتيک با متغيري به همين نام در PHP شناخته ميشود (مانند ديگر متغيرهاي محيطي وب سرور). از اينرو نوشتن چنين اسکريپتهايي بسيار آسان و لذت بخش خواهد بود!
4- اشکال زدايي PHP در مقايسه با Perl CGI
اگر شما اسکريپتهاي نوشته شده را به صورت آنلاين آزمايش و اشکال زدايي ميکنيد PHP واقعا در اين زمينه مي درخشد!
هنگامي که اشکالي در يک اسکريپت Perl پيدا شود شما يک پيغام رمزگونه و نامفهوم (چيزي شبيه "500 Internal Server Error") دريافت ميکنيد.
اما وقتي که اسکريپت هاي PHP خود را به صورت آنلاين آزمايش ميکنيد ، هنگام مواجه شدن با اشکال پيغام خطا را با اشاره دقيق به شماره خط داراي اشکال ميدهد و اين براي اشکال زدايي خيلي کار ما را راحت ميکند ، هر چند پيغام خطا گاهي اوقات کلي و نامفهوم است مانند "parse error".
ولي در Perl پيغام خطاي "Internal Server Error" مي تواند از هر چيزي ناشي شود ، از اشتباه در syntax گرفته تا جا انداختن يک حرف يا upload کردن فايل در غير text mode .
اما اشکال زدايي به صورت آفلاين کاملا برعکس مي باشد.
بيشتر برنامه نويسان اعتقاد دارند که مفسر Perl هنگام مواجه شدن با خطا پيغام بهتر و مفيد تري ميدهد تا مفسر PHP که مثلا براي بسياري از خطاها پيغام کلي parse error را ميدهد که اين امر هم با توجه به انتشار نسخه هاي جديدتر PHP ميتواند برطرف شود.
موفق باشيد .
براي کساني که فقط نامي از PHP شنيده اند و از تواناييها و مزيت هاي PHP آگاهي ندارند در اين مقاله PHP رو به طور مختصر شرح شرح ميدهم و آن را با اسکريپتهاي CGI مقايسه ميکنم.
PHP يک زبان طرف خادم (server side ) مي باشد و شما ميتوانيد براي ساخت صفحات ديناميک وب از آن استفاده کنيد. براي مثال مديريت و ساماندهي اطلاعات دريافتي از يک form اچتمل با PHP بسيار آسان است.
1- زبان:
اگر شما با زبانهاي C , C++ , Perl يا Java کار ميکنيد ياد گرفتن زبان PHP ميتواند مانند زنگ تفريح باشد! در واقع شما خيلي سريع ميتوانيد اسکريپت نويسي را با PHP شروع کنيد.
متغيرها در PHP مانند PHP هستند (با پيشوند $ ) و انواع مختلف داده ها را ميتوانند در خود ذخيره کنند. براي مثال $whatever ميتواند انواع داده ها شامل رشته اي ، عددي و غيره را در خود نگه دارد.
اگر مقدار $whatever يک عدد باشد شما ميتوانيد مقدار آن را اينگونه افزايش دهيد:
$whatever ++;
يا
$whatever =+1;
يا
$whatever=$whatever+1;
که دقيقا همان روشي است که در C ، C++ ، Perl يا Java به کار ميبرديد.
2- تسهيلات توکار (Built-in facilities )
بر خلاف Perl که يک زبان همه منظوره است و شما ميتوانيد تقريبا هر برنامه اي را با آن بنويسيد ، PHP از ابتدا با هدف اسکريپت نويسي براي صفحات وب درست شده ، از اينرو اسکريپت نويسي براي صفحات وب در PHP بسيار آسانتر از Perl مي باشد.
براي مثال ميخواهيم از يک فرم در يک صفحه وب ايميلي را به آدرس خودمان ارسال کنيم. به کمک Perl شما احتمالا کدي شبيه زير را مينويسيد :
open ( MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: myself\@mydomain.com\n" ;
print MAIL "From: visitor\@hisdomain.com\n" ;
print MAIL "Subject: Comments from Web Form\n\n" ;
print MAIL $mainmessage ;
close ( MAIL ) ;
اما همين برنامه در PHP به شکل زير نوشته مي شود :
mail ( "myself@mydomain.com", "Comments from Web Form",
$mainmessage, "From: visitor@hisdomain.com" );
خب حتما تفاوت اين دو زبان در سادگي و راحتي را متوجه شده ايد!
اين سادگي و رواني براي بقيه کارها هم صادق است ، مانند فرستادن يا بازيابي يک پرونده با FTP يا HTTP.
همانطور که گفته شد اين سادگي از اونجا ناشي ميشه که PHP فقط براي برنامه نويسي براي صفحات وب طراحي شده است.
تسهيلات ديگر آن در اداره کردن input هاي يک form مي باشد ، براي مثال يک فرم مانند زير را در نظر بگيريد:
<input
type=text name="dateofbirth">
شما خيلي راحت و سريع مي توانيد به محتويات اين فرم در متغير $dateofbirth دسترسي داشته باشيد. نيازي به تجزيه و تحليل input هاي فرم نيست.
تمام فيلد ها در يک فرم به طور اتوماتيک به متغيرهايي تبديل ميشوند که شما خيلي راحت ميتوانيد به آنها دسترسي داشته باشيد.
دسترسي به پايگاه داده ها هم به همين شکل اسان و راحت است. کار با پايگاه هاي داده مانند MySQL, MSQL, Dbase, Oracle, InterBase, از قابليتهاي ذاتي (Built-in) PHP است . PHP حتي براي رمزنگاري MIME هم تابعي در نظر گرفته است. قابليتها و تسهيلات PHP بسيار زياد است و طبيعتا ممکن نيست به همه آنها را در اين مقاله اشاره کرد.
اشاره به اين چند مورد هم فقط براي اين بود که تصميم شما را براي فراگيري PHP قاطع تر کنم!
3- ساخت صفحات وب :
يک صفحه PHP ميتواند شبيه کد زير باشد :
<html>
<head><title>My First PHP Script</title></head>
<body>
<h1>My First PHP Script</h1>
<p>
Welcome, Internet user from IP address
<?echo $REMOTE_ADDR?>. Hope you like my first
PHP page.
</body>
</html>
توجه کنيد که اين دقيقا شبيه source صفحات وب مي باشد مگر در موارد که دستورات PHP را شامل مي شوند. اين کد آدرس IP بيننده صفحه را مينويسد ، براي همين از دستور echo استفاده کرده ايم . متغير محيطي وب سرور (environment variable) REMOTE_ADDR به صورت اتوماتيک با متغيري به همين نام در PHP شناخته ميشود (مانند ديگر متغيرهاي محيطي وب سرور). از اينرو نوشتن چنين اسکريپتهايي بسيار آسان و لذت بخش خواهد بود!
4- اشکال زدايي PHP در مقايسه با Perl CGI
اگر شما اسکريپتهاي نوشته شده را به صورت آنلاين آزمايش و اشکال زدايي ميکنيد PHP واقعا در اين زمينه مي درخشد!
هنگامي که اشکالي در يک اسکريپت Perl پيدا شود شما يک پيغام رمزگونه و نامفهوم (چيزي شبيه "500 Internal Server Error") دريافت ميکنيد.
اما وقتي که اسکريپت هاي PHP خود را به صورت آنلاين آزمايش ميکنيد ، هنگام مواجه شدن با اشکال پيغام خطا را با اشاره دقيق به شماره خط داراي اشکال ميدهد و اين براي اشکال زدايي خيلي کار ما را راحت ميکند ، هر چند پيغام خطا گاهي اوقات کلي و نامفهوم است مانند "parse error".
ولي در Perl پيغام خطاي "Internal Server Error" مي تواند از هر چيزي ناشي شود ، از اشتباه در syntax گرفته تا جا انداختن يک حرف يا upload کردن فايل در غير text mode .
اما اشکال زدايي به صورت آفلاين کاملا برعکس مي باشد.
بيشتر برنامه نويسان اعتقاد دارند که مفسر Perl هنگام مواجه شدن با خطا پيغام بهتر و مفيد تري ميدهد تا مفسر PHP که مثلا براي بسياري از خطاها پيغام کلي parse error را ميدهد که اين امر هم با توجه به انتشار نسخه هاي جديدتر PHP ميتواند برطرف شود.
موفق باشيد .