تعداد بازدید: 2165

ویژگی های جدید در PHP 7

php7 با عملکردی متفاوت و ویژگی های جدید و حذف برخی عملکرد های قدیمی به همراه تغییرات زیادی ارائه شد. بسیاری از ابزارهای زبان php نظیر WordPress , Laravel نیز از یه زمانی به بعد استفاده از خودشون رو بر اساس php7 به بعد قرار دادند.

Anonymous Classes

قابلیت ساخت کلاس بدون نام (Programmer Declared Name) یا کلاس ناشناخته با استفاده از کلمه کلیدی new که می توان آن را در یک متغیر قرار داد. عملکرد آن متغیر نسبت به یک متغیر دیگر که از یک کلاس با نام new شده است تفاوتی ندارد.

به عبارت دیگر می توان گفت گرامر (Syntax) همان کلاس عادی فقط بدون نام . Anonymous classes در موارد زیر مورد استفاده قرار می گیرد:

  • زمانی که کلاس نیاز به مستند سازی ندارد( documented ).
  • کلاس تنها یک بار در طول برنامه اجرا می گردد.
  • تنهای یک شئ از کلاس قرار است ساخته شود.
$app = new class Logger {
    public function log(string $msg) {
        echo $msg;
    }
}

CSPRNG Functions

توابع جدید برای ایجاد رشته و اعداد تصادفی :

  • random_bytes : طول خروجی بایت را می گیرد و مقدار را تولید می کند. اگر با استفاده از تابع bin2hex می توانیم آن را به مبنای hexadecimal ببریم.
  • random_int : بازه اعداد را می گیرد و با توجه به بازه اعداد عدد تصادفی صحیح را ایجاد می کند.
$random_bytes = random_bytes(5);
echo $random_bytes;
echo bin2hex($random_bytes);
#---------------------------
echo random_int(100,999);

New Oprators

عملگر های جدیدی برای زیبا تر شدن کد و همچنین کارایی بهتر نظیر ?? , :? , <=> معرفی شدند.

Spaceship Operator : برای مقایسه کوچکتر یا بزرگتر بودن دو مقدار بر اساس جدول مقایسه نوع می باشد. خروجی این تابع 0 و 1 و -1 می باشد. 0 به ازای تساوی و 1 به ازای بزرگتر بودن پارامتر اول و -1 به ازای بزرگتر بودن پارامتر دوم.

// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "aa" <=> "b"; //-1
echo "b" <=> "a"; // 1


Null coalescing : عملگری پرکاربرد برای مقدار دهی متغیر ها بر اساس دو متغیر دیگر . به طوری که اگر متغیر اول isset شده بود بر میگردد جهت مقدار دهی و در غیر این صورت متغیر دوم که مقدار پیش فرض هم است.

$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

ternary operator : عملگری که هنگام مقدار دهی یک متغیر استفاده می شود. به طوری که اگر مقدار بازگشتی چیزی غیر از null و مقدار خالی بود برمی گرداند و در غیر اینصورت مقدار Default را بر می گرداند.

if(some_function() !== null){
  $value = some_function();
}else{
  $value = 'Default';
}
//This is equivalent to:
$value = some_function() ?: 'Default';

تفاوت ternary operator و null coalescing : عملگر ternary مقادیر تعریف نشده را بر نمی تابد و بر عکس null coalescing .

echo $c ?? 'a'; // a
echo $c ?: 'a'; // Notice: Undefined variable: c in /in/apAIb on line 14

Scalar Type

که برخی جاها به آن Type hinting می گویند به شما این مجوز را می دهد که نوع داده متغیر یا پارامتر یا خروجی متد( Argument Type and Return Type) را مشخص کنید.

scalar technique

  • None : یعنی نوع متغیر بر اساس عملگر مقدار.
  • Coercive : در صورت مغایرت نوع متغیر ورودی مقدار را تبدیل می کند.مثلا فرض کنید یک تابع مقدار ورودی int می گیرد ولی ما به آن '20' را می دهیم. مقدار رشته به integer تبدیل می شود.
  • Strict : در صورت مغایرت نوع پارامتر ورودی خطا می دهد. این اتفاق با declare(strict_types = 1) انجام می پذیرد.
//declare(strict_types = 1);
function add(int $a,int $b): int{
	return $a+$b;
}
add(10,20);
add(10,'20');

Constant arrays

می توان یک ثابت از نوع آرایه تعریف کرد. در ورژن های قبل PHP ما تنها قابلیت تعریف ثابت از نوع رشته یا عدد را داشتیم.

define('ANIMALS', array('dog','cat','bird' ));
echo ANIMALS[1]; // outputs "cat"

Group use declarations

می توان در یک خط کد تعداد زیادی نشانه (namespace) را use کرد.

// pre PHP 7
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;
// PHP 7+ code
use some\namespace\{ClassA, ClassB, ClassC as C};

 

مطالب مشابه

عبارات منظم یا عبارات باقاعده

عبارات منظم RegularExpression

در این قسمت قصدداریم تا با یکی از مباحث پیشرفته یعنی عبارات منظم یا عبارات باقاعده (regular expression) آشنا بشیم....

namespace rational in php

منطق Namespace در PHP

دوتابع با نام یکسان Fatal Error است. برای جلوگیری از این خطا می توانید یک prefix ابتدای نام تابع بنویسید تا احتمال...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای ویژگی های جدید در PHP 7

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *