در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

ویژگی های جدید PHP 7 بخش دوم

سلام. در مطلب قبلی در مورد قابلیت های جدیدی که در PHP نسخه 7 ارائه شده بود صحبت کردیم. این مطلب هم به ادامه مطلب قبلی در مورد این قابلیت ها می پردازد. در ادامه بخش هایی را که در PHP 7 ارائه شده است می پردازیم.


قابلیت Closure::call()


قابلیت Closure::call() برای bind کردن فراخوانی یک تابع به یک کلاس یا شی است. به شکلی که از بیرون یک تابع تعریف می شود و می تواند با اعضای کلاس کار کند. این قابلیت در ورژن های قبل از 7 به شکل زیر پیاده سازی می شد.

class A {private $x = 1;}
$getX = function() {return $this->x;};
$getXCB = $getX->bindTo(new A, 'A');
echo $getXCB();

اما این قابلیت در نسخه 7 بهبود داده شده است و آن را می توان به شکل زیر پیاده سازی کرد.

$getX = function() {return $this->x;};
echo $getX->call(new A);

دقت شود که کدهای بالا معادل هم هستند و خروجی هرکدام 1 می باشد.


تولید خروجی چندتایی


این قابلیت به شکلی است که می توان توسط آن کاری کرد که یک تابع بتواند در چند زمان خروجی تولید کند. یعنی بدون این که یک آرایه بسازید و آن را به عنوان خروجی برگردانید می توانی نتایج را هر زمان که تولید شدند به عنوان خروجی برگرداند. این قابلیت برای زمانی که تولید شدن خروجی ها زمان معینی ندارند و یا با شبکه کار می کنیم می تواند مفید باشد. در کد زیر یک مثال از این قابلیت آورده شده است.

$gen = (function() {
    yield 1;
    yield 2;

    return 3;
})();

foreach ($gen as $val) {
    echo $val, PHP_EOL;
}

echo $gen->getReturn(), PHP_EOL;
//output: 1
//output: 2
//output: 3

در این قابلیت همانطور که می بینید به جای استفاده از return از کلمه کلیدی yield استفاده شده است. اما برای این که مقدار return تابع را دریافت کنیم باید از متد getReturn استفاده نماییم. همچنین می توان این قابلیت را به چند تابع گسترش داد. به شکلی که چند تابع مسئول تولید نتایج باشند. برای این کار باید کدی شبیه به کد زیر نوشت

function gen()
{
    yield 1;
    yield 2;
    yield from gen2();
}

function gen2()
{
    yield 3;
    yield 4;
}

foreach (gen() as $val)
{
    echo $val, PHP_EOL;
}

//output 1
//output 2
//output 3
//output 4


گزینه های session


در PHP7 می توان تنظیماتی را که برای session ها در فایل php.ini قرار داده شده است را هنگام استارت شدن session تغییر داد. برای مثال به کد زیر توجه کنید:

session_start([
    'cache_limiter' => 'private',
    'read_and_close' => true,
]);

در کد بالا وقتی مقدار cacheLimiter را private قرار دهیم کش مربوط به session ها به محض این که خوانده شد پاک می شود.

با وب سایت tosinso همراه باشید.

نویسنده: مهدی عادلی فر

منبع: tosinso.com

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

#آموزش_گام_به_گام_php #ویژگی_های_php_7 #آموزش_برنامه_نویسی_php #آموزش_php
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....