فتح واغلاق الملفات

Fopen
تستخدم هذه الدالة ثلاث عوامل هي مسار الملف (path) والوضع له ( للقراءة ، للكتابة .....) بالاضافة إلى مسار الـInclude فيه وتقوم هذه الدالة بإرجاع مقبض للملف ...

قد تواجهنا مشاكل أحيانا فقد يكون الملف غير منشأ أو أننا لا نملك صلاحيات عليه ولذلك فإنه يمكننا اختبار القيمة التي ترجعها هذه الدالة فإذا كانت القيمة صفر فهذا معناه أن الدالة فشلت في إرجاع مقبض الملف أو نوعه ، أما إذا كانت القيمة هي واحد فهذا معناه أن الدالة قد نجحت في فتح الملف

مثال
كود:
$fp=fopen (“./data.txt”, “r”);
if (!$fp) die (“فشل في قراءه الملف تأكد من التراخيص ومن مسار الملف”);
يمكننا كتابة المثال أيضا بالشكل التالي :
كود:
If  (!($fp=fopen (“./data.txt”, “r”))) die (“لا يمكن القراءة من الملف”);
لاحظ أننا قلنا سابقاً أن هناك دوال تستخدم للتعامل مع الملفات تستخدم مقبض وهذا المقبض هو عبارة عن رقم ، في مثالنا هذا يتحدد رقم المقبض الذي هو المتغير $fp الذي يخزن فيه مكان الملف وما إذا كان قابلاً للفتح أو لا أو يعمل أو لا يعمل ، والنتيجة التي تتخزن في المتغير $fp هي رقم مثلما قلنا سابقاً وهو صفر إذا كان الملف لا يعمل أو واحد إذا تم فتح الملف بنجاح ..

الآن دعنا نناقش معاملات الدالة fopen الذي تقوم بإعطائنا رقم المقبض ..

أول معامل هو مسار الملف على القرص الصلب

لنفرض أن لديك مجلدا قمت بإنشائه في مجلد السكربتات الرئيسي لديك الذي يسمى htdocs وأسميته data

ولنفرض أن سكربتك يستخدم ملفين :
1- ملف للقراءة والكتابة يسمي data.txt .
2- وملف يقوم بعرض المدخلات والإضافة إليها اسمه script.txt .

حسنا لدينا الآن ثلاث حالات للسكربت

الحالة الأولى :
أن يكون الملفين في نفس المجلد (data) وعند ذلك يمكنك فتح الملف الذي تريد فتحه بذكر اسمه فقط من غير إضافات
$fp=fopen (“data.txt”, “r”);

الحالة الثانية:
أن يكون هناك مجلد في نفس مجلد الـdata باسم آخر ولنقل أن هذا الاسم هو gb وفيه ملف data.txt على ذلك فإننا نكتب المسار المطلق لهذا المجلد كالتالي :
$fp=fopen (“./gb/data.txt”, “r”);


الحالة الثالثة :
أن يكون الملف الذي تريد قراءته موجود في المجلد htdocs بينما السكربت موجود في المجلد data الموجود داخل htdocs على ذلك نكتب المسار النسبي كالتالي
كود:
$fp=fopen (“../data.txt”, “r”);
لاحظ النقطه التي تسبق العلامة الأمامية جيدا..
أتمني أن تكون فهمت من هذا الكلام ما هو المقصود بالمسار المطلق والمسار النسبي ..
يمكننا أيضا وضع رابط صفحة في موقع آخر ولكننا لن نستطيع الكتابة عليه بل قراءته فقط

مثال :

كود:
If  (!($fp=fopen (“http://www.swalif.net/softs/index.php”, “r”))) die (“لا يمكن القراءة من الملف”);
ينقصنا نقطه يجب أن نتكلم عنها وهي عند تحديد العامل use_include_path

العامل الثاني الذي نستخدمه للملفات هو حاله الملف


( للقراءة ، للكتابة ، للإضافة إليه) يحدد وضعية الملف حال فتحه إذا كان للقراءة فقط أو للكتابة فقط أو للاثنين معاً أو للإضافة ، وأرتبها هنا في جدول بسيط ..


هناك مؤشر للملفات يحدد إذا ما كنت ستكتب من نهاية أو بداية الملف أو حتى من وسطه أو من أي مكان بالملف ، ستعرف كيفية التحكم بهذا المؤشر بعد قليل .

العامل الثالث هو تحديد use_include_path


فإذا قمت بتحديد قيمته إلي (1) وقمت بكتابة اسم الملف مباشرة فسيبحث الـPHP عن الملف في نفس المجلد الموجود به السكربت ثم سيقوم بالبحث عن الملف في المجلدات التي تم تحديدها في المتغير use_include_path في ملف php.ini




مثال :
كود:
$fp=fopen (“./data.txt”, “r”,1);
fclose
عندما تنتهي من التعامل مع الملف ، تحتاج إلى إغلاقه لكي يتم حفظ التعديلات عليه ، إذا تم إحباط سكربتك لأي سبب أو أن السكربت انتهي عمله فإن الـPHP يقوم بإغلاق جميع الملفات تلقائيا
تقوم الدالة fclose() بإغلاق الملف عندما تريد إغلاقه وهي تحتاج إلي معامل واحد فقط وهو مقبض الملف الذي تريد إغلاقه
مثال :
Fclose ($fp) ;