فراخوانی متد از کلاس به صورت پویا

پرسیده شده
فعالیت 1122 روز پیش
دیده شده 343 بار
1

سلام می خواستم بدونم که تفاوت این سینتکس 

$obj->$method();

با این سینتک

$obj->{$method}();

چیه ؟ مزیت گذاشتن گیومه { } در این سینتکس چی هست ؟

فایل پیوست

Faraz salehi
Faraz salehi

18 فروردین 00

3
حذف شده

سلام و احترام

به کد زیر دقت کنید

<?php

class Foo {
    public function test1()
    {
        return 'sad';
    }


    public function test2()
    {
        return 'happy';
    }
  }

$obj = new Foo();

echo $obj->'test1'();

این کد خطای زیر رو داره

Parse error: syntax error, unexpected single-quoted string "test1", expecting identifier or variable or "{" or "$" in C:\xampp\htdocs\php\index.php on line 18

اگه ما بخوایم مثل مثال بالا نام تابع رو درون یه رشته صدا بزنیم قطعا به این خطا میخوریم، برای جلوگیری از این خطا و برای اینکه php از ما خطای syntax نگیره و به عنوان یه نام تابع بهش نگاه کنه از براکت استفاده میکنیم

<?php

class Foo {
    public function test1()
    {
        return 'sad';
    }


    public function test2()
    {
        return 'happy';
    }
  }

$obj = new Foo();

echo $obj->{'test1'}();

خروجی 

sad

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

$var = "way";
echo "Two {$var}s to defining variable in a string.";

 

فایل پیوست

امیر صالحی

توسط

امیر صالحی

18 فروردین 00