Null Object Pattern In PHP

پترن Null Object برای جلوگیری از نوشتن if else جهت بررسی نال بودن یک شی، به کار می‌رود. به عبارتی براساس این پترن، برنامه به نحوی نوشته ‌می‌شود که برنامه به حالت واقعی‌تر نزدیک می‌شود و کلاس‌‌ها مسئولیت نمایش و بررسی وضعیت نال (null) بودن رو به عهده دارند.

مثال

فرض کنید وب‌سایتی داریم که دو نوع عضویت دارد، عادی و ویژه. این وب‌سایت به مانند سایت آپارت، یک بخش برای نمایش ویدئوها دارد. همه کاربران امکان مشاهده ویدئوها را دارند اما فقط کاربران ویژه توانایی مشاهده آمار ویدئوها را دارند. نمونه کدهای زیر طوری پیاده‌ سازی شده‌اند که از if else برای بررسی null بودن امکان مشاهده ویدئو توسط کاربران عادی جلوگیری کرده است. به عبارتی

 if (!is_null($obj)) { $obj->callSomeFunction(); } will be $obj->callSomeFunction();

<?php

class VideoController
{
   
    // Dependency Injection Of UserInterface
    public function __construct(private UserInterface $user)
    {
    }

    /**
     * Show video stats
     */
    public function showStats()
    {
        // Let's assume this videoStats is only available when the user is premium
        // not for the standard user
        $this->user->videoStats();
    }
}
<?php

interface UserInterface
{
    public function videoStats();
}
<?php

class PremiumUser implements UserInterface
{
    public function videoStats()
    {
        print '70% video watched!'; // Hard coded for demo purpose
    }
}
<?php

class NullUser implements UserInterface
{
    public function videoStats()
    {
        // do nothing
        return '';
    }
}
<?php

//VideoController 

$premiumUser = new VideoController(new PremiumUser());
$premiumUser->showStats();

$standardUser = new VideoController(new NullUser());
$standardUser->showStats();

 

منبع: https://sakeoflearning.com/null-object-pattern-in-php

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نخواهد شد.