TAHA
11-05-2009, 08:36 PM
اول از همه سلام خدمت همه دوستان در این انجمن
اولین . پست خودم رو در باره یک اخبار کامل از php 5.30 شروع می کنم
ورژن php 5.30 آماد شد و در تاریخ 30-Jun-2009 بیرون آمد
که سری آخر 5x . امکاتان زیادی بهش اضافه شده که من در زیر نوشتم
1- پشتیبانی از namespace (http://php.net/namespaces) (که در یک تاپیک جدا در موردش کاملا توضیح میدم )
2 . Late static binding (http://php.net/lsb): به وسیله این قابلیت می توانید در داخل کلاس با دستور static
به یک متد Static دسترسی پیدا کنید
کد PHP:
static::StaticMethodName();
و در خارج از کلاس هم با آوردن مستقیم نام کلاس این کار رو انجام بدهید
کد PHP:
ClassName::StaticMethodName();
3.Lambda Functions and Closures (http://php.net/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 (http://php.net/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 (http://php.net/ternary): دستور ternary
که مانند دستور if کار میکنه (شررط?true:false). یک حالت دیگه هم بهش اضافه شده
اونم اینه که می توانید . عبارت وسط رو وارد نکنید
کد PHP:
$one=($tow?:$tree);
به صورت بالا اگر $tow درست باشه . خود $tow به $one منتقل میشه در غیر این صورت $tree
jump label (limited goto) (http://php.net/goto):
با استفاده از دستورgoto می توانید به هرجا از برنامه که علامت مربوطه رو گذاشتین پرش کنید
کد PHP:
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
برنامه بالا مقدار Bar رو بر می گردونه حرف a هم که جلوی دستور goto نوشته شده یک کلید هست
و می تونه هر نام دیگه ای باشه
یک مثال پیشرفته تر
کد 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() (http://php.net/__callstatic):
یک متد Overloading است (به راهنمای برنامه نویسی شی گرا در php 5 مراجع کنید )
که هر وقت شما با یک متد Static ارتباط برقرار کنید . واکنش نشون میده
5. و php 5.30 قدرتش در گرد کردن اعداد شناور بیشتر و بهتر شده
6. بدلیل اینکه 'notice (در error reporting ) . مورد علاقه کسی نبود E_DEPRECATED ( قسمتی از E_ALL)
به جای E_STRICT گذاشته شد
7. flexiblity in php.ini (http://php.net/ini.sections) :
به وسیله flexibity می توانید در فایل php.ini
تعریف کنید که هر فایل یا فولدر چه تنظیمات ini داشته باشه
مثلا یک برای یک دامین
کد PHP:
[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On
می توانید از path استفاده کنید
کد 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/manual/ini.core.php#ini.zend.ze1-compatibility-mode) هم حدف شد
منبع : PHP: PHP 5.3.0 Release Announcement (http://php.net/releases/5_3_0.php)
اولین . پست خودم رو در باره یک اخبار کامل از php 5.30 شروع می کنم
ورژن php 5.30 آماد شد و در تاریخ 30-Jun-2009 بیرون آمد
که سری آخر 5x . امکاتان زیادی بهش اضافه شده که من در زیر نوشتم
1- پشتیبانی از namespace (http://php.net/namespaces) (که در یک تاپیک جدا در موردش کاملا توضیح میدم )
2 . Late static binding (http://php.net/lsb): به وسیله این قابلیت می توانید در داخل کلاس با دستور static
به یک متد Static دسترسی پیدا کنید
کد PHP:
static::StaticMethodName();
و در خارج از کلاس هم با آوردن مستقیم نام کلاس این کار رو انجام بدهید
کد PHP:
ClassName::StaticMethodName();
3.Lambda Functions and Closures (http://php.net/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 (http://php.net/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 (http://php.net/ternary): دستور ternary
که مانند دستور if کار میکنه (شررط?true:false). یک حالت دیگه هم بهش اضافه شده
اونم اینه که می توانید . عبارت وسط رو وارد نکنید
کد PHP:
$one=($tow?:$tree);
به صورت بالا اگر $tow درست باشه . خود $tow به $one منتقل میشه در غیر این صورت $tree
jump label (limited goto) (http://php.net/goto):
با استفاده از دستورgoto می توانید به هرجا از برنامه که علامت مربوطه رو گذاشتین پرش کنید
کد PHP:
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
برنامه بالا مقدار Bar رو بر می گردونه حرف a هم که جلوی دستور goto نوشته شده یک کلید هست
و می تونه هر نام دیگه ای باشه
یک مثال پیشرفته تر
کد 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() (http://php.net/__callstatic):
یک متد Overloading است (به راهنمای برنامه نویسی شی گرا در php 5 مراجع کنید )
که هر وقت شما با یک متد Static ارتباط برقرار کنید . واکنش نشون میده
5. و php 5.30 قدرتش در گرد کردن اعداد شناور بیشتر و بهتر شده
6. بدلیل اینکه 'notice (در error reporting ) . مورد علاقه کسی نبود E_DEPRECATED ( قسمتی از E_ALL)
به جای E_STRICT گذاشته شد
7. flexiblity in php.ini (http://php.net/ini.sections) :
به وسیله flexibity می توانید در فایل php.ini
تعریف کنید که هر فایل یا فولدر چه تنظیمات ini داشته باشه
مثلا یک برای یک دامین
کد PHP:
[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On
می توانید از path استفاده کنید
کد 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/manual/ini.core.php#ini.zend.ze1-compatibility-mode) هم حدف شد
منبع : PHP: PHP 5.3.0 Release Announcement (http://php.net/releases/5_3_0.php)