۱۳۸۸ شهریور ۰۱, ۱۰:۲۰ ب.ظ
ورژن php 5.30 آماد شد و در تاريخ 30-Jun-2009 بيرون آمد
که سري آخر 5x . امکاتان زيادي بهش اضافه شده که من در زير نوشتم
1- پشتيباني از namespace (که در يک تاپيک جدا در موردش کاملا توضيح ميدم )
2 . Late static binding : به وسيله اين قابليت مي توانيد در داخل کلاس با دستور static
به يک متد Static دسترسي پيدا کنيد
و در خارج از کلاس هم با آوردن مستقيم نام کلاس اين کار رو انجام بدهيد
3.Lambda Functions and Closures:
توابع بدون نام اين امکان رو به شما ميدهند (اگر با جاوا اسکريپ کار کرده باشيد حتما ديدين)
که يک تابع بدون نام درست کنيم و اونو به درون يک متغيير بريزيم .
يا اينکه به عنوان آرگومان يک تابع که ورودي callback ميگيره در نظرش بگيريم
4. دستورات اضافه شده :
NOWDOC : اين دستور مثل heredoc عمل مي کنه
با اين تفاوت که
اين دستور کارکتر هاي خاص مانند \r\n يا متغيير ها رو مانند تک کوتيشن در نظر نميگيره
ternary short cut: دستور ternary
که مانند دستور if کار ميکنه (شررط?true:false). يک حالت ديگه هم بهش اضافه شده
اونم اينه که مي توانيد . عبارت وسط رو وارد نکنيد
به صورت بالا اگر $tow درست باشه . خود $tow به $one منتقل ميشه در غير اين صورت $tree
jump label (limited goto):
با استفاده از دستورgoto مي توانيد به هرجا از برنامه که علامت مربوطه رو گذاشتين پرش کنيد
برنامه بالا مقدار Bar رو بر مي گردونه حرف a هم که جلوي دستور goto نوشته شده يک کليد هست
و مي تونه هر نام ديگه اي باشه
يک مثال پيشرفته تر
__callStatic() :
يک متد Overloading است (به راهنماي برنامه نويسي شي گرا در php 5 مراجع کنيد )
که هر وقت شما با يک متد Static ارتباط برقرار کنيد . واکنش نشون ميده
5. و php 5.30 قدرتش در گرد کردن اعداد شناور بيشتر و بهتر شده
6. بدليل اينکه 'notice (در error reporting ) . مورد علاقه کسي نبود E_DEPRECATED ( قسمتي از E_ALL)
به جاي E_STRICT گذاشته شد
7. flexiblity in php.ini :
به وسيله flexibity مي توانيد در فايل php.ini
تعريف کنيد که هر فايل يا فولدر چه تنظيمات ini داشته باشه
مثلا يک براي يک دامين
مي توانيد از path استفاده کنيد
8. extensions هاي زير هم اضافه شد:
ext/phar, ext/intl, ext/fileinfo, ext/sqlite3, ext/enchant
9. 140 باگ هم فيکس شد
و يه چزهاي هم از php خذف شد که شامل
اين extensions ها
ext/mhash (به جاش ext/hash)
ext/msql
ext/pspell (به جاش ext/enchant)
ext/sybase (به جاش ext/sybase_ct)
اين ها هم به PECL منتقل شدند
ext/ming, ext/fbsql, ext/ncurses, ext/fdf
ini.zend.ze1-compatibility-mode هم حدف شد
منبع : http://php.net/releases/5_3_0.php
که سري آخر 5x . امکاتان زيادي بهش اضافه شده که من در زير نوشتم
1- پشتيباني از namespace (که در يک تاپيک جدا در موردش کاملا توضيح ميدم )
2 . Late static binding : به وسيله اين قابليت مي توانيد در داخل کلاس با دستور static
به يک متد Static دسترسي پيدا کنيد
کد پیاچپی:
static::StaticMethodName();
کد پیاچپی:
ClassName::StaticMethodName();
3.Lambda Functions and Closures:
توابع بدون نام اين امکان رو به شما ميدهند (اگر با جاوا اسکريپ کار کرده باشيد حتما ديدين)
که يک تابع بدون نام درست کنيم و اونو به درون يک متغيير بريزيم .
يا اينکه به عنوان آرگومان يک تابع که ورودي callback ميگيره در نظرش بگيريم
کد پیاچپی:
<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
?>
کد پیاچپی:
<?php
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
4. دستورات اضافه شده :
NOWDOC : اين دستور مثل heredoc عمل مي کنه
با اين تفاوت که
اين دستور کارکتر هاي خاص مانند \r\n يا متغيير ها رو مانند تک کوتيشن در نظر نميگيره
کد پیاچپی:
echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
ternary short cut: دستور ternary
که مانند دستور if کار ميکنه (شررط?true:false). يک حالت ديگه هم بهش اضافه شده
اونم اينه که مي توانيد . عبارت وسط رو وارد نکنيد
کد پیاچپی:
$one=($tow?:$tree);
jump label (limited goto):
با استفاده از دستورgoto مي توانيد به هرجا از برنامه که علامت مربوطه رو گذاشتين پرش کنيد
کد پیاچپی:
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
و مي تونه هر نام ديگه اي باشه
يک مثال پيشرفته تر
کد پیاچپی:
<?php
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
if($j==17) goto end;
}
}
echo "i = $i";
end:
echo 'j hit 17';
?>
__callStatic() :
يک متد Overloading است (به راهنماي برنامه نويسي شي گرا در php 5 مراجع کنيد )
که هر وقت شما با يک متد Static ارتباط برقرار کنيد . واکنش نشون ميده
5. و php 5.30 قدرتش در گرد کردن اعداد شناور بيشتر و بهتر شده
6. بدليل اينکه 'notice (در error reporting ) . مورد علاقه کسي نبود E_DEPRECATED ( قسمتي از E_ALL)
به جاي E_STRICT گذاشته شد
7. flexiblity in php.ini :
به وسيله flexibity مي توانيد در فايل php.ini
تعريف کنيد که هر فايل يا فولدر چه تنظيمات ini داشته باشه
مثلا يک براي يک دامين
کد پیاچپی:
[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On
کد پیاچپی:
[PATH=/home/site/public/secure]
auto_prepend_file=security.php
8. extensions هاي زير هم اضافه شد:
ext/phar, ext/intl, ext/fileinfo, ext/sqlite3, ext/enchant
9. 140 باگ هم فيکس شد
و يه چزهاي هم از php خذف شد که شامل
اين extensions ها
ext/mhash (به جاش ext/hash)
ext/msql
ext/pspell (به جاش ext/enchant)
ext/sybase (به جاش ext/sybase_ct)
اين ها هم به PECL منتقل شدند
ext/ming, ext/fbsql, ext/ncurses, ext/fdf
ini.zend.ze1-compatibility-mode هم حدف شد
منبع : http://php.net/releases/5_3_0.php