الكاتب: Dr.Nabhan | 30 يوليو 2006

سلام الله عليك يا سجين البرمجة الكريم
انت تعبت من السهر على البرمجة وتعريف المتغيرات وبما أنك دخلت سجن البرمجة إذا أنت
خبير في تعريف المتغيرات و التعامل معها
ولكن هل خطر ببالك ما هي أنواع المتغيرات و كيفية التعامل معها ؟
هل خطر ببالك كيف يمكن لأي واحد من الخارج اختراق متغيراتك أو التعامل معها بطريقة
خاطئة ؟
هل خطر ببالك أن لكل نوع من المتغيرات عالم خاص به و دوال خاصة به ؟
هل و هل وهل .. ! أسئلة كثيرة يجب طرحها على كثير من مبرمجينا العرب يجيبك بنعم
أعرف
دون فقه لما يقوله
عذراً ربما تعتبرني يا سجيننا الكريم بالغت .. ولكن هذا هو واقع الحال ..
أنا مثلاًً بقيت فترة كبيرة أبرمج بالـ Php دون فقه لكثير من أشياء كنت اعتبر نفسي
خبيراً بها وعندما واجهتني مشاكل بها أوقفت العمل على كل البرنامج ..
لذلك أقمت على قتل هذا السقم في أدائي بالتعلم من المواقع الأجنبية ..
إذ أن المواقع العربية لا تفيدنا بشكل كبير ...
لذلك فلنحاول يا سجناء البرمجة الكرام أجمعكم بأن نحاول شرح الأشياء التي نعتبرها
صغيرة لكنها كبيرة و قد خصصت الـ Php لها دوال لأهميتها إذ أن كثير من الأحيان يتم
الإلتفاف حولها من قبل خبراء البرمجة و يكشفون ضعف المبرمج من خلال هذه الدوال
فكلنا نتعلم الصعب قبل أن نتعلم الأساسيات السهلة ليس في البرمجة فقط بل بجميع دروب
حياتنا

حسناً يا مسجون البرمجة

أنواع المتغيرات

Integers
الأعداد الصحيحة
PLAIN TEXT
PHP:

1.
$val = 22;

ويتم تعريف المتغير كعدد صحيح كما في المثال السابق دون علامة تنصيص

الدوال التي تتعامل معها :

أهم دالة intval
PLAIN TEXT
PHP:

1.
Intval($val);

تقوم هذه الدالة بجعل المتغير عدد صحيح
مثال :
PLAIN TEXT
PHP:

1.
echo intval(42); // 42
2.
echo intval(4.2); // 4
3.
echo intval('42'); // 42
4.
echo intval('+42'); // 42
5.
echo intval('-42'); // -42
6.
echo intval(042); // 34
7.
echo intval('042'); // 42
8.
echo intval(1e10); // 1410065408
9.
echo intval('1e10'); // 1
10.
echo intval(0x1A); // 26
11.
echo intval(42000000); // 42000000
12.
echo intval(420000000000000000000); // 0
13.
echo intval('420000000000000000000'); // 2147483647
14.
echo intval(42, 8); // 42
15.
echo intval('42', 8); // 34

وهذه الدالة مهمة جداً للمبرمجين خصوصاً في حالة السيكيورتي وهذا ليس موضوعنا ..

Floating point numbers
الأعداد العشرية
PLAIN TEXT
PHP:

1.
$val = 2.2;

وهي ايضا بدون علامات تنصيص

الدوال :
أهم دالة floatval
هذه الدالة تقوم بإستخراج الأرقام العشرية من بين النصوص
PLAIN TEXT
PHP:

1.
$var = '122.34343The';
2.
$float_value_of_var = floatval($var);
3.
echo $float_value_of_var; // 122.34343

String
النصوص
PLAIN TEXT
PHP:

1.
$val = "This is astring num 555";

وهي للنصوص وكما ترى يجب تعريفها وحولها عمليات تنصيص

Boolean
المثال يوضح كل شيء
PLAIN TEXT
PHP:

1.
$val = true;
2.
$val = false;

في الأولى المتغير موجود وفي الثانية المتغير غير موجود

Array
وهنالك النوع المشهور بالـ Array أو المصفوفة
وهذه المصفوفة تقوم بإدخال أكثر من قيمة للمتغير الواحد كالتالي
PLAIN TEXT
PHP:

1.
$arr = array(5,"the","num 500");

كما ترى أنواع المتغيرات عشوائية

الآن كيف يمكنك استعراض الرقم 5 فقط ؟
PLAIN TEXT
PHP:

1.
Echo $arr[0];

كما ترى عزيزي المسجون هنا نستعرض أول قيمة من قيم المصفوفة
PLAIN TEXT
PHP:

1.
Echo $arr[1];

كما ترى يا مسجون البرمجة الكريم أن مفتاح المصفوفة هنا 1 و صفر و 2 و ... الخ
والمفتاح هو الطريق كي تعرض متغير ، إذاً تسأل نفسك أنا مقيّد بهذا المفتاح في كل
مصفوفاتي
كلا يمكنك أن تغير المفتاح كما تشاء عن طريق تعريف المصفوفة
كالتالي
PLAIN TEXT
PHP:

1.
$a = array ('a' =>; 'apple', 'b' =>; 'banana');

إذاً قمنا بتعريف المفتاح عن طريق وضعه داخل قوسين '' و نضع بعده >;=
كما ترى المفتاح الأول a و الثاني b
واذا أردنا استعراض كلمة apple نكتب التالي
PLAIN TEXT
PHP:

1.
Echo $a['b'];

مفهومة أليس كذلك ؟
والمصفوفات يمكن أن تستخدم بطريقة شجرية أو بمعنى أسهل يمكن وضع مصفوفة داخل مصفوفة

ولكن هذا ليس موضوعنا حتى لا تتقاطع الخطوط و ترجع للزنزانة وأنت محتار

دوال المصفوفات كثير وسنستعرض في بعضاً منها ..
Print_r
وهذه الدالة تقوم بعرض كافة قيم المصفوفة و أرقامه
PLAIN TEXT
PHP:

1.
<br />
2.
$a = array ('a' =>; 'apple', 'b' =>; 'banana');
3.
print_r ($a);

الناتج
PLAIN TEXT
PHP:

1.
Array
2.
(
3.
[a] =>; apple
4.
[b] =>; banana
5.
)

إذا هذه الدالة عرضت لي المصفوفة بمفاتيحها بقيمها .
سهلة أليس كذلك ؟

Is_array
وهذه الدالة تستفسر عمّا إذا كان المتغير مصفوفة أم string أو أي نوع آخر ؟

مثلاًً
PLAIN TEXT
PHP:

1.
<br />
2.
$yes = array('this', 'is', 'an array');
3.
$no = 'this is a string';
4.

5.
if(is_array($yes)) { echo 'Array'; }
6.
Else { echo 'not an Array'; }
7.

8.

9.
echo if(is_array($no)) { echo 'Array'; }
10.
Else { echo 'not an Array'; };

in_array
هذه الدالة تستفسر عمّا إذا كان المتغير الممرر لها في داخل المصفوفة المطلوبة أم
لا ؟

مثال :

PLAIN TEXT
PHP:

1.
$yes = array('this', 'is', 'an array');
2.
If (in_array('this',$yes))
3.
{
4.
Echo "Great your val is in our array";
5.
}
6.
Else
7.
{
8.
echo "Go Out ";
9.
}

كما ترى يا مسجوني المصفوفات ليست صعبة جداً لكنها عالم كامل لذا أنصحك بمحاولة
التعمق فيها لأهميتها في php
وأنا بإذن الله كلما توفر الوقت سأتكلم عن المصفوفات

دوال المتغيرات العامة

Gettype
هذه الدالة كي تستخرج نوع المتغير إن كان srting أو اخوته
PLAIN TEXT
PHP:

1.
$val = 2;
2.
$val_type = $gettype($val);
3.
echo $val_type; // integer

Settype
هذه الدالة لتغيير نوع المتغير من نوع لآخر ..
PLAIN TEXT
PHP:

1.
$foo = "5bar"; // string
2.
$bar = true; // boolean
3.

4.
settype($foo, "integer"); // $foo is now 5 (integer)
5.
settype($bar, "string"); // $bar is now "1" (string)

Empty
يستفسر عمّا إذا المتغير فارغ أو لبس له قيمة
PLAIN TEXT
PHP:

1.
If (empty($val)) { echo "No val"; }

ويمكن الاستغناء عنها كالتالي
PLAIN TEXT
PHP:

1.
If (!$val) { echo "No val"; }

Isset
عكس الدالة السابقة وهي تستفسر إن كان المتغير له قيمة أو لا ؟
PLAIN TEXT
PHP:

1.
If (isset($val)) { echo "the val is set and it's value=$val"; }

ويمكن الاستغناء عنها كالتالي
PLAIN TEXT
PHP:

1.
If ($val) { echo "the val is set and it's value=$val"; }

Unset
للاستغناء عن المتغير و تفريغ قيمته (وداعا)
PLAIN TEXT
PHP:

1.
$val = "Hi";
2.
echo $val; // hi
3.
unset($val);
4.
Echo $val; // no thing will appear

ويمكن استخدامها لتدمير قصدي الاستغناء عن أكثر من متغير هكذا
PLAIN TEXT
PHP:

1.
unset($foo1, $foo2, $foo3);

get_defined_vars
دالة غريبة عجيبة .. تأتي بجميع المتغيرات المعرفة لديك في مصفوفة واحدة
PLAIN TEXT
PHP:

1.
$val = "d";
2.
$val_arr = get_defined_vars();
3.
Echo $val_arr['val']; // d

أفهمتها ؟
انت تقوم بتعريف متغير بهذه الدالة فتعيد لك الدوال بأسمائها في مصفوفة واحدة

مثال آخر
PLAIN TEXT
PHP:

1.
$val_arry = (1,2,3,3);
2.
$arr = get_defined_vars();
3.
Print_r($arr['val_arry']);