6.6 لغة البرمجة php | كتاب لينكس الشامل | >> |
ما يميز لغة php أنها لغة تشبه لغة C إلى حد كبير جدا اضافة إلى صغر حجم مفسر هذه اللغة وقدرته على التطور وأهم تطبيقات هذه اللغة مواقع الإنترنت التفاعلية مثل المنتديات وهي أيضا قادرة على قراءة قواعد البينات المختلفة خصوصاً mysql
إن الشكل التقلديدي لبرنامج 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
أكثر الأخطاء شيوعا هي نسيان الفاصلة المنقوطة
printf وشبيهاتها في php لا تأخذ %i
استعمل
%d
بدلا منها
لتعريف وظيفة اكتب
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;
التنصيص في 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'
يتم تحويل نوع المتغير تلقائيا في php
وهذا جيد إلا أنه قد يسبب لك مشاكل
مثلا افرض أن $s="after 0 comes 1"
وكنت تعمل حلقة while($s[$i++])
فإنها ستتوقف عند الصفر وليس كما هو متوقع عند
نهاية السلسلة لأن قيمة الصفر تعني false
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);
تفيد هذه العملية عند قراءة ملف اعدادات أو ماشابه
fread و fwrite تنهيان العملية عند انتهاء النص أو الوصول إلى الرقم المحدد أيهما يأتي أولاً ويعتبر الرقم هذا اختياري ومفضل
يفترض أن أكون قد تحدثت عن صيغة ملف 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
<< السابق | كتاب لينكس الشامل | التالي >> |