PDA

View Full Version : مقاله: php 5.30 Release آخرین سری 5x



raoufi
دوشنبه 05 مرداد 1388, 15:06 عصر
ورژن php 5.30 آماد شد و در تاریخ 30-Jun-2009 بیرون آمد
که سری آخر 5x . امکاتان زیادی بهش اضافه شده که من در زیر نوشتم

1- پشتیبانی از namespace (http://[URL]http://php.net/namespaces) (که در یک تاپیک جدا در موردش کاملا توضیح میدم )

2 . Late static binding (http://php.net/lsb): به وسیله این قابلیت می توانید در داخل کلاس با دستور static
به یک متد Static دسترسی پیدا کنید


static::StaticMethodName();

و در خارج از کلاس هم با آوردن مستقیم نام کلاس این کار رو انجام بدهید


ClassName::StaticMethodName();


3 . Lambda Functions and Closures (http://php.net/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 (http://http://php.net/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 (http://php.net/ternary): دستور ternary
که مانند دستور if کار میکنه (شررط?true:false). یک حالت دیگه هم بهش اضافه شده
اونم اینه که می توانید . عبارت وسط رو وارد نکنید


$one=($tow?:$tree);

به صورت بالا اگر $tow درست باشه . خود $tow به $one منتقل میشه در غیر این صورت $tree

jump label (limited goto) : (http://php.net/goto)
با استفاده از دستورgoto می توانید به هرجا از برنامه که علامت مربوطه رو گذاشتین پرش کنید


<?php
goto a;
echo 'Foo';

a:
echo 'Bar';
?>

برنامه بالا مقدار Bar رو بر می گردونه حرف a هم که جلوی دستور goto نوشته شده یک کلید هست
و می تونه هر نام دیگه ای باشه
یک مثال پیشرفته تر


<?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 داشته باشه
مثلا یک برای یک دامین


[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On
می توانید از path استفاده کنید


[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://[URL]http://php.net/manual/ini.core.php#ini.zend.ze1-compatibility-mode) هم حدف شد
منبع : [URL]http://php.net/releases/5_3_0.php

Appolo
دوشنبه 05 مرداد 1388, 18:34 عصر
namespace ها در نسخه های قبلی هم پشتیبانی میشد!

raoufi
دوشنبه 05 مرداد 1388, 20:41 عصر
namespace ها در نسخه های قبلی هم پشتیبانی میشد!
خیر . فقط در نسخه 5.30 و
5.30 به بالا .

Appolo
سه شنبه 06 مرداد 1388, 06:14 صبح
خیر . فقط در نسخه 5.30 و
5.30 به بالا .

درسته، من چند وقت پیش یک برنامه ای دیده بودم که از namespace استفاده کرده بود، فکر کردم در 5.2 هم پشتیبانی میشه.

fatemeh_sm
پنج شنبه 28 آبان 1388, 20:12 عصر
لطفا اگر درباره ورژن هاي ديگر php چيزي ميدونيد به ميلم ارسال كنيد.
fateme_saboohi@yahoo.com