راکت

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

2 پاسخ

سلام وقتتون بخیر
من چند وقته درگیر اینم که یک کلاس رو طوری بنویسم که اینجوری بشه باهش کار کرد.(مثله لاراول)
ClassName::func1()->func2()->func3();
هرچی گوگل کردم به نتیجه نرسیدم.
کسی از دوستان میتونه کمکم کنه؟
پ.ن: تمامی فانکشن ها داینامیک هستند. درواقع اولین فانکشن(که داینامیکه) رو میشه به صورت استاتیک فراخوانی کرد دقیقا مثله query builder های لاراول.
پ.ن:دوستان توجه داشتن باشن منظور بنده method chaining نیست سوال من در رابطه با فراخوانی کلاس داینامیک توسط شیوه استاتیک است.

حسین
حسین
@Phoenixco1999
ثبت پرسش جدید

پاسخ‌ها

2
سیدعلی موسوی
سیدعلی موسوی
@juza66

تخصص: سی شارپ و پی اچ پی

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

<?php
class MyTest {
    public function Hello() {
        echo "Hello ";
        return $this;
    }

    public function World() {
        echo "World!";
    }
}

$h = new MyTest();
$h->Hello()->World();
?>
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

@Phoenixco1999

این کار با استفاده از Magic Method ها در PHP انجام میشه. از دو متد call__ و call_static__ استفاده میشه. اولی برای توابع معمولی که در متن کلاس موجود نیستند و دومی برای توابع استاتیکی که در متن کلاس موجود نیستند.

در یکی از گفتگوها، این مطلب رو بصورت کامل توضیح دادم.
https://roocket.ir/discuss/2959
موفق باشید

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام