کار با Complex (curly) syntax در PHP

توی زبون های مختلف وقتی با رشته ها کار میکنیم ممکنه بخوایم یه استرینگ رو مثلا اکو کنیم یا هر کار دیگه ای و داخل اون استرینگ یه متغیر هم باشه. توی PHP میتونید رشته رو توی دبل کوتیشن بذارید و رشته بصورت رندر شده داخل استرینگ نشون داده میشه. یه همچین چیزی منظورم هست:

<?php
$name = "Hamid";
echo "My name is $name";

// output: My name is Hamid

ولی یسری مواقع هست که شما میخواید از یک آرایه ی Associative مقدار بکشی بیرون. فرض کنید از یه ریکوعست داده اومده واستون و میخواید داده ای که از $_GET اومده رو مستقیما توی رشته چاپ کنید. (این یه مثاله و قطعا توی این موارد بهتره validation انجام بشه).

<?php

echo "My name is $_GET['name']";

// output: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in strings.php on line 3

توی همچین دو تا راه سخت دارید. یکی از سختا اینه که مقدار رو بیرون از رشته بگیرید داخل یه متغیر ذخیره کنید و بعد اونو بذارید داخل رشته که یدونه الکی متغیر هدر میره:

<?php

$name = $_GET['name'];
echo "My name is $name";

راه دوم سخت تر اینه که رشته ها رو بچسبونید به متغیر به این صورت که کار رو یکم سخت میکنه:

<?php

echo "My name is $name" . $_GET['name'];

ولی راه قشنگتر اینه که از Complex (curly) syntax استفاده کنید که در میشه آرایه های Associative هم توی استرینگ مستقیم رندر کرد.

<?php

$user = [
    'name' => 'Hamid',
    'age' => 29
];
echo "My name is {$user['name']} and I am {$user['age']} years old.";

// output: My name is Hamid and I am 29 years old.

میبینید که چقد شیک و ساده میشه اینکارو کرد توی ورژن های جدید PHP.

شاد باشید 🙂

دیدگاه‌ها

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

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