آشنایی با مفهوم Method Chaining در متودولوژی OOP

آشنایی با مفهوم Method Chaining در متودولوژی OOP

آنچه در این آموزش قصد داریم مورد بررسی قرار دهیم مفهومی است تحت عنوان Method Chaining که در برخی مواقع خاص در پروژه‌هایی که بر اساس متودولوژی OOP توسعه داده می‌شوند کاربر دارد. برای شروع، داخل پوشهٔ oop پروژه‌ای تحت عنوان method-chaining ساخته و ساختاری که تاکنون مورد استفاده قرار می‌دادیم را داخل آن ایجاد می‌کنیم به طوری که داریم:

mathod-chaining/
├── classes
│   └── User.php
├── composer.json
├── index.php
└── vendor
    ├── autoload.php
    └── composer
        ├── autoload_classmap.php
        ├── autoload_namespaces.php
        ├── autoload_psr4.php
        ├── autoload_real.php
        ├── autoload_static.php
        ├── ClassLoader.php
        └── LICENSE

حال داخل پوشهٔ classes فایل User.php را به صورت زیر تکمیل می‌کنیم:

<?php
namespace SokanAcademy;

class User
{
    public function showFirstname()
    {
        echo 'Behzad ';
        return $this;
    }

    public function showLastname()
    {
        echo 'Moradi';
    }
}

ابتدا داخل فایل index.php آبجکتی از روی کلاس User ساخته و آن را اجرا می‌کنیم سپس به بررسی کدهای داخل این کلاس خواهیم پرداخت:

<?php
ini_set('display_errors', '1');
require_once 'vendor/autoload.php';

$user = new SokanAcademy\User();
$user->showFirstname()->showLastName();

همان‌طور که می‌بینیم، آبجکتی تحت عنوان user$ از روی کلاس User ساخته سپس متدهای ()showFirstname و ()showLastname را یکی پس از دیگری با درج علامت <- فراخوانی کرده‌ایم به طوری که در خروجی خواهیم داشت:

Behzad Moradi

در واقع، در این پروژه توانسته‌ایم صرفاً در قالب یک خط هر دو متد موجود داخل کلاس مذکور را فراخوانی نماییم. اگر مجدد به کلاس User برگردیم، می‌بینیم که داخل متد ()showFirstname پس از echo کردن استرینگ مذکور از دستور ;return $this استفاده کرده‌ایم. کاری که این دستور انجام می‌دهد این است که پس از چاپ کردن استرینگ موجود، مقدار this$ ریترن می‌شود و تا این مرحله از دورهٔ آموزش OOP در PHP بارها و بارها تذکر داده‌ایم که this$ به کلاسی که داخل آن قرار داریم بازمی‌گردد؛ به عبارت دیگر، با فراخوانی متد ()showFirstname، در نهایت کلاس User داخل این متد ریترن می‌گردد و همین می‌شود که می‌توان همچون یک آبجکت با آن رفتار کرده و علائم <- را قرار داده و متد بعدی که ()showLastname است را روی آن فراخوانی کرد. لازم به یادآوری است که همین کار را نیز می‌توان برای متد ()showLastname انجام داد به طوری که داریم:

<?php
namespace SokanAcademy;

class User
{
    public function showFirstname()
    {
        echo 'Behzad ';
        return $this;
    }
    
    public function showLastname()
    {
        echo 'Moradi ';
        return $this;
    }

    public function showDateOfBirth()
    {
        echo 1984;
    }
}

همان‌طور که ملاحظه می‌شود، داخل متد ()showLastname نیز از دستور ;return $this استفاده کرده‌ایم سپس متد دیگری تحت عنوان ()showDateOfBirth نوشته‌ایم که این وظیفه را دارا است تا تاریخ تولد کاربر را ریترن کند. حال به فایل index.php بازگشته و آن را به صورت زیر آپدیت می‌کنیم:

<?php
ini_set('display_errors', '1');
require_once 'vendor/autoload.php';

$user = new SokanAcademy\User();
$user->showFirstname()->showLastName()->showDateOfBirth();

چنانچه این فایل را اجرا کنیم، در خروجی خواهیم داشت:

Behzad Moradi 1984

در حقیقت،‌ آبجکت اصلی user$ است اما متدهای ()showFirstname و ()showLastName نیز از آنجا که دستور this$ را ریترن کرده‌اند، به صورت انتزاعی حاوی کلاس User هستند و از همین روی می‌توان با استفاده از علامت <- که در ارتباط با آبجکت‌ها کاربرد دارد استفاده نمود.

2-1
آشنایی با مفاهیم Class و Object در متودولوژی OOP
بهزاد مرادی
1398/03/06
2-2
آشنایی با مفاهیم Constructor و Destructor در OOP
بهزاد مرادی
1398/03/07
2-3
آشنایی با متدهای به اصطلاح Magic در زبان PHP
بهزاد مرادی
1398/03/07
2-4
آشنایی با مفهوم وراثت در زبان PHP
بهزاد مرادی
1398/03/07
2-5
آشنایی با مفهوم Access Modifier در زبان PHP
بهزاد مرادی
1398/03/07
2-6
آشنایی با مفهوم Interface در متودولوژی OOP
بهزاد مرادی
1398/03/08
2-7
آشنایی با کلاس‌های Abstract در زبان PHP
بهزاد مرادی
1398/03/08
2-8
آشنایی با مفاهیم Setter و Getter در متودولوژی OOP
بهزاد مرادی
1398/03/08
2-9
آشنایی با کاربردهای کلیدواژهٔ final در ساخت کلاس و متد در زبان PHP
بهزاد مرادی
1398/03/09
2-10
آشنایی با مفهوم Method Chaining در متودولوژی OOP
بهزاد مرادی
1398/03/09
2-11
آشنایی با مفهوم Dependency Injection در زبان PHP
بهزاد مرادی
1398/03/09
2-12
آشنایی با مفهوم Type Hinting در زبان PHP
بهزاد مرادی
1398/03/09
2-13
آشنایی با کاربردهای پراپرتی‌ها و متدهای Static در زبان PHP
بهزاد مرادی
1398/03/10
2-14
آشنایی با مفهوم Trait در زبان PHP
بهزاد مرادی
1398/03/10
2-15
آشنایی با نحوهٔ استفاده از کانستنت‌ها در متودولوژی OOP در زبان PHP
بهزاد مرادی
1398/03/10
2-16
آشنایی با نحوهٔ Clone کردن یک آبجکت در زبان PHP
بهزاد مرادی
1398/03/11
2-17
آشنایی با مفهوم Return Type Declaration در زبان PHP
بهزاد مرادی
1398/03/11
2-18
آشنایی با PHP Standard Library
بهزاد مرادی
1398/03/11
2-19
آشنایی با نحوهٔ مدیریت اِکسپشن‌ها در زبان PHP
بهزاد مرادی
1398/03/12
2-20
آشنایی با استاندارد کامنت‌گذاری PHPDoc
بهزاد مرادی
1398/03/12
کاربر میهمان

دوست گرامی شما به عنوان کاربر میهمان در سایت سکان آکادمی حضور دارید لطفاً برای ارسال دیدگاه ابتدا وارد حساب خود شوید

اگر login نکردی برامون ایمیلت رو بنویس: