Professional Documents
Culture Documents
تعلم برمجة جزء5
تعلم برمجة جزء5
<body>
<?php
$arr = array( 's'=>''ثانية,
'S'=>''ثوان,
'i'=>''دقيقة,
'I'=>''دقائق,
'h'=>''ساعة,
'H'=>''ساعات,
'd'=>''يوم,
'D'=>''أيام,
'w'=>''أسبوع,
'W'=>''أسابيع,
'm'=>''شهر,
'M'=>''شهور,
'y'=>''سنة,
'Y'=>''سنوات
);
$retArr = getElapsedTime(mkTime(0,0,0,'2','1','2013'));
echo $retArr[1].' '.$arr[$retArr[0]];
function getElapsedTime ($t)
{
$timeDiff = time()-$t;
if($timeDiff < 60)
{
if($timeDiff<1)
{
$arr[] = 's';
$arr[] = '0';
}
121 التعامل مع الوقت والتاريخ: الفصل الثامن
else
{
$arr[] = 'H';
}
$arr[] = $temp;
}
else if(($temp=(int)($timeDiff/(60*60*24))) < 7)
{
if($temp<3)
{
$arr[] = 'd';
}
else
{
$arr[] = 'D';
}
$arr[] = $temp;
}
else if(($temp=(int)($timeDiff/(60*60*24*7))) < 4)
{
if($temp<3)
{
$arr[] = 'w';
}
else
{
$arr[] = 'W';
}
$arr[] = $temp;
123 التعامل مع الوقت والتاريخ: الفصل الثامن
}
else if(($temp=(int)($timeDiff/(60*60*24*7*4))) < 12)
{
if($temp<3 or $temp>10)
{
$arr[] = 'm';
}
else
{
$arr[] = 'M';
}
$arr[] = $temp;
}
else
{
$temp = (int)($timeDiff/(60*60*24*30*12));
if($temp<3 or $temp>10)
{
$arr[] = 'y';
}
else
{
$arr[] = 'Y';
}
$arr[] = $temp;
}
return $arr;
}
?>
الفصل الثامن :التعامل مع الوقت والتاريخ 124
></body
></html
في المثال السابق استخدمت الحروف الصغير ة والكبير ة للتفرقة بين مدى الرقام فالحرف
الصغير يدل على أن العدد إما 1أو 2أو أكبر من 10والحرف الكبير ما دون ذلك .
طبع ًا بإاضافة بعض التغييرات البسيطة على الدالة لتمكننا من طباعة ما نشاء كالدقائق والثوان
معًا أو اليام والساعات أي شيئ كيفما تشاء .
ملحظة :من الصدار 5.1.0فما فوق أصبح مدى الـ timestampsمن 13ديسمبر
1901الساعة GMT 20:45:54إلى 19يناير 2038الساعة GMT 03:14:07وهو
أقصى مدى للمتغير من النوع الصحيح intمن النوع signedفي أنظمة . 32bit
وللحصول على تاريخ أقل من سنة 1970سندخل قيمة سالبة للدالة dateولمعرفة الـ
timestampsلتاريخ قبل 1970أيضًا سنستخدم mktimeوستعطينا قيمة ولكن بإشار ة سالبة إذا
تم تمرير هذه القيمة للدالة dateستحصل على التاريخ .
<?php
;))'echo age(mktime(0,0,0,'12','5','1960
)function age($in
{
)if($in<0
{
;)($in = (-1*$in)+time
}
else
{
;$in = time()-$in
}
;))return (int)($in/(365.25*24*60*60
125 الفصل الثامن :التعامل مع الوقت والتاريخ
}
>?
الفصل التاسع :التعامل مع الملفات و المجلدات 126
folder/file1.txt
اما إذا كان الملف file1.txtموجـودا ً في الـمـجـلد الب للــمـجلد التــالي )أي الـمـجلد الذي يـسبقه(
يكـون المسار كالتالي :
../file1.txt
أي ان النـقطـتـين تـ شيران الى أن الملف المطلوب في المجلد الب للمجلد الحالي ,ويوجد أيضا
النقطة الواحد ة " ".التي تشير الى المجلد الحالي حيث يمكن استبدال المسار الول كما يلي :
./folder/file1.txt
اما الروابط المطلقة فهي ُتشير الى مسار الملف أيا ً كان المجلد الذي يوجد فيه البرنامج .
للحصول على المسار كامل ً نستخدم الدالة realpathالتي تقبل وسيطا ً وحيدا ً هو المسار
النسبي للملف :
<?php
;)'echo realpath('file1.txt
>?
وفي حال لم ُيحدد الوسيط فيستم اعاد ة المسار المطلق للمجلد الحالي .
التأكد من وجود ملف :
في بعض الحيان يلزم معرفة إذا كان ملف ُمعين بمساره موجود أم ل ,ولمعرفة ذلك نقوم
باستدعاء الدالة file_existsالتي تـقـبل وسـيـطا ً وحـيدا ً هو مـسار الـملف و ُتعـيد القيـمة trueفـي
حال وجوده :
127 الفصل التاسع :التعامل مع الملفات و المجلدات
<?php
)if(file_exists('file1.txt') === true
{
;'echo 'file "file.txt" exists
}
;'>echo '<br
)if(file_exists('file2.txt') === false
{
;'echo 'file "file2.txt" does not exists
}
>?
الحصول على حجم تخزين ملف :
في حال اردنا معرفة حجم ملف ,نستخدم الدالة filesizeالتي تقبل وسيطا ً واحدا ً هو مسار
الملف ,وُتـعيـد هذه الـدالة حـجـم المـلف مقـدرا ً بالبايت ,وللحـصول على الـحـجـم مـقدرًا
بالـكـيلوبايت أو الميغا بايت ,نقسم على 1024أو ) (1024*1024على التوالي وبالترتيب :
<?php
;)'$size = filesize('file1.txt
;'echo 'The size of file1.txt is : '. floor($size / 1024) .' KB
>?
استخراج امتداد ملف :
كما تعلم لكـل نوع من الملـفات امـتداد معـين خاص بها ,حـيث يـكون المتداد مسبوقا ً بنقطة ,
فلذلك نقـوم باسـتخـراج المـتداد عـن طـريـق الـدالة - explodeالتـي سـبق شـرحـها فـي فـصـل
مـصـفوفـات حيث يكون امتداد الملف هو اخر سلسلة نصية تكون مسبوقة بنقطة " ".كما في
المثال التالي :
<?php
;'$file = 'file.example.txt
الفصل التاسع :التعامل مع الملفات و المجلدات 128
ملحظة :الحرف cفي الدالة filectimeيدل على كلمة , changeأما الحرف mفي
الدالة الثانية فهو يدل على الكلمة . modification
<?php
;))'echo date("m/d/Y H:i:s", filemtime('file1.txt
>?
والـدالة ُ fileatimeتعـيـد بصـمـة وقـت آخـر وصـول للـمـلف أو falseفـي حـال فـشـلـها ,وكـمـا فـي
الدوال السابقة فهي تقبل مسار ملف ما كوسيط .
لـمـعـرفـة امـكـانـية القراء ةis_readable , is_writable , is_ executable نـسـتـخدم الـدوالphp في
. أو الكتابة أو التنفيذ على التوالي وبالترتيب
وتقبل وسيطا ً وحيدا ً هو مسار, ماعدا ذلكfalse في حـال نجاحها أوtrue ُتـعـيد هـذه الـدوال
. القيد
المـثـال الـتـالي يـخـتـبر إمـكـانـيـة الـقـراء ة والـكـتابة و الـتـنفـيذ والحـصـول على حجم الملف وغيرها
: file1.txt من المعلومات المتعلقة بالملف
<?php
$file = 'file1.txt';
echo '<pre>';
if(file_exists($file) === true)
{
echo "Displaying file information for file $file ...<br>";
echo 'File path :' .realpath($file). '<br>';
echo 'File size :'. floor(filesize($file) / 1024). 'KB <br>';
echo 'Last File changing time : ' .date("m/d/Y H:i:s",
filectime('file1.txt')). '<br>';
echo 'Last File modification time : '. date("m/d/Y H:i:s",
filemtime('file1.txt')). '<br>';
echo 'Last File access : ' .date("m/d/Y H:i:s",
fileatime('file1.txt')). '<br>';
echo 'Is readable? : ';
echo is_readable($file) == true ? 'true' : 'false';
echo '<br>';
echo 'Is writable? : ';
echo is_writable($file) == true ? 'true' : 'false';
echo '<br>';
echo 'Is executable? : ';
echo is_executable($file) == true ? 'true' : 'false';
الفصل التاسع :التعامل مع الملفات و المجلدات 130
;'>echo '<br
}
else
{
;">echo "File $file is not exists ...<br
}
;'>echo '</pre
>?
مثال على إخراج الكود السابق للملف file1.txtالموجود في مجلد : /opt/lampp/htdocs/
<?php
;)'unlink('file1.txt
>?
تغيير صلحيات قيد :
كما في نظام linuxوالنظمة الشبيهة باليونكس ,حيث نستخدم المر chmodلتغيير صلحيات