6.6 لغة البرمجة php كتاب لينكس الشامل >>

6.6 لغة البرمجة php

الفهرس

6.6.1 مقدمة

ما يميز لغة php أنها لغة تشبه لغة C إلى حد كبير جدا اضافة إلى صغر حجم مفسر هذه اللغة وقدرته على التطور وأهم تطبيقات هذه اللغة مواقع الإنترنت التفاعلية مثل المنتديات وهي أيضا قادرة على قراءة قواعد البينات المختلفة خصوصاً mysql

6.6.2 البرنامج الأول

إن الشكل التقلديدي لبرنامج php هو <?php ثم البرنامج ثم > ويمكن أن تتكرر أكثر من مرة وما هو خارجها يرسل إلى الخرج هذا هو برنامجنا الأول

#!/bin/env php
<?php
# this is my 1st php program

/*
 * PHP is a C-like language
 */
printf ("Hello World!!\n"); // ';' is a must
>
وهناك أكثر من طريقة للكتابة رسالة منها printf(FORMAT,...); التي شرحناها أكثر من مرة و print STRING; أو echo STRING; أما صيغة لغة php فهي مشابهة للغة C خصوصاً أن الفاصلة المنقوطة اجبارية مع ملاحظة وضع $ أما المتغيرات وتحتوي نفس الوظائف مكتباتها القياسية مثل printf و fscanf ولكن بعض الوظائف التي تتعامل مع جهاز الدخل القياسي غير موجودة استبدلها بالتي تتعامل مع ملف مع وضع STDIN على أنه الملف وأيضا في php لا يوجد تعريف نوع المتغير أو اعلان عن نموذج الوظائف declerations and functions prototypes ولا يوجد في php وظيفة أساسية main بل كل ما يكتب خارج الوظائف الأخرى يحسب main

warningتحذير

أكثر الأخطاء شيوعا هي نسيان الفاصلة المنقوطة

warningتحذير

printf وشبيهاتها في php لا تأخذ %i استعمل %d بدلا منها

6.6.3 المزيد من التفاصيل

لتعريف وظيفة اكتب function ثم أي اسم ثم أقواس مثلا anyname() ثم حاصرات { } وبينهما الكود واذا كانت هذه الوظيفة تأخذ معاملات ضعها داخل الأقواس ولا تنسى $ ودون ذكر نوعها مثلا function max($a,$b) { if ($a>$b) return $a; return $b;} ويمكنك أن تكتب هذا في أي مكان من الملف وتناديه من أي مكان أنا أفضل أن تكن في آخر الملف ولكنها ستكون أسرع لو كانت في أوله

#!/bin/env php
<?php
// START OF MAIN 
printf ("Enter an integer: "); 
fscanf(STDIN,"%d",$a);
count_them($a)
// END OF MAIN 
function count_them($j) {
        for($i=0;$i<$j;++$i) {
                printf ("I'm counting %d\n",$i);
        }
}
>

لاحظ أن for هي بنفس طريقة C وأيضاً switch و do و while و if بل وحتى الشرط المختصر (Condition)?Statment1:Statment2 مثلا $c=($a>$b)?$a:$b;

6.6.4 خصوصية php

التنصيص في php نوعين قوي وضعيف تماما كما في bash و perl على عكس لغة c مثلا printf ("$a"); ستطبع قيمة المتغير a بينما printf ('$a'); ستطبع $a

اذا كنت تريد وضع رسالة طويلة في متغير (لطباعته مثلاً) يمكنك استعمال استعمل <<< ثم أي كلمة غير موجودة في النص لتكون علامة النهاية END OF STRING مكان بداية التنصيص وينتهي التنصيص بسطر يبدأ مباشرة بتلك العلامة (بدون أي مسافات أو أي شيء آخر) وتكمن فائدتها في عمل صفحات الإنترنت حيث تريد انتاج كود html دفعة واحدة وتسمح هذه الطريقة بالتعويض مثلاً

$fruit="Apples";
$str1 = <<<EOS
	Welcome in PHP
	this is a very long string
	do you like $fruit ?
	me I like $fruit
EOS;
print ("$str1");
لجمع أكثر من نص نستخدم علامة النقطة مثلا $str3=$str1.$str2 لتعريف منظومة اكتب $avar = array(1,'two',"three"); ولتحديد عنصر فيها استخدم [] بعد اسم المنظومة مثلا $avar[0] والسلسلة النصية عبارة عن منظومة كما في لغة C مثلا $str="Ali"; print($str[2]); // this gives 'i'

warningتحذير

يتم تحويل نوع المتغير تلقائيا في php وهذا جيد إلا أنه قد يسبب لك مشاكل مثلا افرض أن $s="after 0 comes 1" وكنت تعمل حلقة while($s[$i++]) فإنها ستتوقف عند الصفر وليس كما هو متوقع عند نهاية السلسلة لأن قيمة الصفر تعني false

6.6.5 التعامل مع الملفات

هناك الكثير من الوظائف التي تشبه وظائف السي القياسية(مع بعض الإختلاف) مثل file_exists("FILENAME"); و filesize("FILENAME"); و unlink("FILENAME"); و و لفتح ملف موجود في طور القراءة "r" نستخدم $file=fopen("FILENAME","r"); ويمكن استخدام أطوار أخرى مثل "r+" طوور القراءة وتنشيء الملف إذا لم يكن موجوداً "w" طور الكتابة فقط "w+" الكتابة والقراءة "a" طور الإضافة "a+" طور الإضافة (قراءة وكتابة) والفرق بين الكتابة والإضافة أن الأولى تضع الموشر على بداية الملف فتسبب الكتابة مسح المعلومات القديمة أما الإضافة فتضع المؤشر في آخر الملف ويمكن استخدام هذه الوظائف لعمليات القراءة والكتابة $var=fread($file,$maxl); أو fwrite($file,$password1,$maxl); أو fputs($file,"STRING"); أو fprintf($file,"FORMAT",...); أو fscanf($file,"FORMAT",...); أو ولتغير مكان المؤشر نستخدم fseek($file,$offset,SEEK_SET); حيث $offset هي الإزاحة بالبايت عن بداية الملف أو fseek($file,$offset,SEEK_END); حيث $offset هي الإزاحة بالبايت قبل نهاية fseek($file,$offset,SEEK_CUR); حيث $offset هي الإزاحة بالبايت عن الموقع الحالي وفي الحالات الثلاثة نبدأ العد من الصفر ولمعرفة الموقع الحالي يمكن أن نستخدم $offset=ftell($file) ويجب أغلاق الملف ب fclose($file);

و يمكنك استخدام split لفصل نص إلى منظومة من السلال النصية باعتماد فاصل معين مثلا $array1=split(",",$str,$maxn); تفيد هذه العملية عند قراءة ملف اعدادات أو ماشابه

warningتحذير

fread و fwrite تنهيان العملية عند انتهاء النص أو الوصول إلى الرقم المحدد أيهما يأتي أولاً ويعتبر الرقم هذا اختياري ومفضل

6.6.6 التعامل مع ملفات xml

يفترض أن أكون قد تحدثت عن صيغة ملف xml قبل هذا المكان على أي حال هو ملف نصي يستخدم لتبادل المعلومات بين البرامج أو كقاعدة بيانات وهو بسيط التركيب وهو حساس لحالة الحروف إن كبيرة أو صغيرة يفترض أن اكتب موضوع عن xml قبل الآن

للتعامل مع ملف xml أي اعرابه وتفسيره وتقطيعه وأخذ المعلومات منه نستخدم نقوم بفتح الملف ب $fp=fopen($filename,"r") بتحميل الملف إلى متغير في الذاكرة بأي طريقة مثل fread ثم نقوم بحجز مفسر xml $myxml_parser=xml_parser_create(); التي تعيد مؤشر نقوم باستخدامه فيما بعد ثم نقوم بكتابة وظيفة لتستلم المعلومات واحدة تستلم البداية <mytag> وتكون على صيغة function startElement($parser, $name, $attrs) حيث $name هو اسم ال tag و $attrs هي منظومة الصفات الموجودة بداخله وأخرى تستلم النهاية </mytag> وتكون على صيغة function endElement($parser, $name) حيث $name هو اسم ال tag ونعينها (نطلب ارسال المعلومات إليها) باستعمال أمر xml_set_element_handler($myxml_parser, "startElement", "endElement"); حيث startElement و endElement هي أسماء الوظائف ثم نكتب وظيفة لتستلم البيانات الموضوعة بين تلك ال tag باستعمال xml_set_character_data_handler($xml_parser, "characterData"); حيث characterData هي الوظيفة التي ستستلم هذه البيانات ولها الصيغة التالية function characterData($parser, $data) وأخيرا نطلب منه أن يبدأ العملية كلها باستعمل xml_parse($xml_parser, $data, feof($fp) حيث $data هو المتغير الذي حملناه من الملف الذي يشير إليه $fp

بعض الروابط
---- php
www.php.net
www.zend.com
www.phpbuilder.com
www.phpworld.com
php.resourceindex.com
www.phpwizard.net
phpclub.unet.ru
php:www.hotscripts.com/php
php:www.phorum.org
lycos.co.uk (free php hosting)
--- apache
www.apache.org
www.apacheweek.com
www.linuxtoday.com/stories/18780.html
--- sql
www.sql.org
www.mysql.com
www.mysql.com/documentation
www.devshed.com
leap.sf.net
w3.one.net/~jhoffman/sqltut.htm
www.w3schools.com/sql

<< السابق كتاب لينكس الشامل التالي >>