k2-4u
Well-Known Member
ورژن 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 دسترسی پیدا کنید
PHP:
static::StaticMethodName();
PHP:
ClassName::StaticMethodName();
3.Lambda Functions and Closures :
توابع بدون نام این امکان رو به شما میدهند (اگر با جاوا اسکریپ کار کرده باشید حتما دیدین)
که یک تابع بدون نام درست کنیم و اونو به درون یک متغییر بریزیم .
یا اینکه به عنوان آرگومان یک تابع که ورودی callback میگیره در نظرش بگیریم
PHP:
<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
?>
PHP:
<?php
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
4. دستورات اضافه شده :
NOWDOC : این دستور مثل heredoc عمل می کنه
با این تفاوت که
این دستور کارکتر های خاص مانند \r\n یا متغییر ها رو مانند تک کوتیشن در نظر نمیگیره
PHP:
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). یک حالت دیگه هم بهش اضافه شده
اونم اینه که می توانید . عبارت وسط رو وارد نکنید
PHP:
$one=($tow?:$tree);
jump label (limited goto):
با استفاده از دستورgoto می توانید به هرجا از برنامه که علامت مربوطه رو گذاشتین پرش کنید
PHP:
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
و می تونه هر نام دیگه ای باشه
یک مثال پیشرفته تر
PHP:
<?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 داشته باشه
مثلا یک برای یک دامین
PHP:
[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On
PHP:
[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