Interface در PHP

Interface در PHP

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۰۶ شهریور ۱۴۰۳
آخرین بروزرسانی: ۰۶ شهریور ۱۴۰۳
زمان مطالعه: 8 دقیقه
۵
(۱)

Interface در PHP قوانینی را ایجاد می‌کند که کلاس موردنظر باید از آن‌ها تبعیت کند. به این صورت، با استفاده از اینترفیس یک کلاس، می‌توان برنامه و نقشه کاری را برای آن کلاس تعریف و اعمال کرد. این یک ویژگی جذاب و شگفت‌انگیز در زمان برنامه‌نویسی است که هم به افزایش قابلیت‌ها کمک می‌کند و هم با استفاده از آن می‌توان امنیت کدها را تا حد بالایی بهبود بخشید. در صورتی که قبلا با اینترفیس در پی اچ پی کار نکرده باشید، اصلا جای نگرانی وجود ندارد. در این مطلب با تمامی نکات مربوط به استفاده از این ویژگی آشنا خواهیم شد.

دوره آموزش شی گرایی در PHP نیک آموز

کاربردهای Interface در برنامه نویسی شی گرا

یکی از ابزارهای مهم و کاربردی در برنامه‌نویسی شی‌گرا، اینترفیس است. اگر با زبان‌های برنامه‌نویسی مانند جاوا یا دیگر ابزارها آشنایی داشته باشید، به احتمال زیاد با کاربرد اینترفیس‌ها نیز آشنایی خواهید داشت. کاربرد اینترفیس در تعریف قراردادها و اطمینان از رعایت قواعد خاصی است که روی کلاس‌ها اعمال می‌شود. بنابراین، کلاس موردنظر باید از این قراردادها و قوانین تبعیت کرده و در طول برنامه اصلا آن‌ها را نقض نکند. 

تعریف قرارداد های مشترک

یک کاربرد مهم Interface در PHP، ایجاد قراردادهایی است که کلاس در طول برنامه موظف به پیاده‌سازی آن است. داخل یک اینترفیس می‌توان متد یا ثابت‌هایی را تعریف کرد که در زمان آینده از قراردادهای آن‌ها استفاده خواهد شد. 

کاهش وابستگی و افزایش انعطاف پذیری

با استفاده از اینترفیس‌ها می‌توان وابستگی‌های پیچیده بین کلاس‌ها را تا حدود قابل توجهی کاهش داد. به این صورت، کلاس‌هایی در اختیار خواهیم داشت که نگهداری، تغییر و توسعه آن‌ها در طول زمان آسان‌تر است. 

کاهش تکرار کد ها

در دنیای برنامه‌نویسی یک اصل مهم وجود دارد و آن تاکید روی کاهش تکرار در کدها است. ساختارهایی مانند Interface در PHP کمک خواهند کرد تا بتوان تکرار شدن زیاد کدها را کاهش داد و در شرایط مختلف کدهای تمیزتری را توسعه داد. 

ساختار بندی کلاس ها

شاید در یک برنامه کوچک پی‌اچ‌پی اصلا نیازی به کلاس یا اینترفیس احساس نشود. با این حال، شرایط زمانی دشوارتر خواهد شد که برنامه‌ها کمی پیچیده‌تر شده و نیاز به استفاده از کلاس‌های متعدد در طول برنامه باشد. برای مثال، در یک کد که برای فروشگاه اینترنتی توسعه داده شده است، نیاز است تا کلاس‌هایی برای اشیا تعریف شود. شاید این کلاس‌ها صدها عدد باشند و این تعداد زیاد مطمئنا کار بررسی کدها و تغییر آن‌ها را دشوارتر خواهد کرد.

با استفاده از اینترفیس در PHP به راحتی می‌توان ساختاربندی کلاس‌ها را انجام داد و به یک طرح اصولی برای توسعه برنامه‌های پی‌اچ‌پی دست پیدا کرد. 

ساختار و نحوه نوشتن Interface در PHP

پیاده‌سازی ساختار Interface در PHP امری کاملا آسان است و برای این کار تنها نیاز به استفاده از کیورد interface داخل کد پی‌اچ‌پی خواهید داشت. اینترفیس می‌تواند ثابت‌هایی را نگه‌داری کند و در کنار آن، امکان تعریف متدهای abstract نیز داخل یک اینترفیس وجود دارد.

در مثال زیر، یک اینترفیس با نام MyInterface تعریف شده است که دارای ثابت constant_one و متد methodOne() است:

 

<?php
interface MyInterface
{
    const constant_one = 1;
    public function methodOne();
}
?>

 

پیاده‌سازی Interface در کلاس ها

اینترفیس در PHP به شما اجازه می‌دهد تا برای کلاس مورد نظر متدهایی را مشخص کنید. با این حال، دقت داشته باشید که داخل اینترفیس نیازی به تعریف روش کار متد وجود ندارد. متدها در جای خود در کلاس تعریف می‌شوند و اینترفیس تنها وظیفه نگه‌داری ساختارهای کلی را برعهده دارد.  

برای نمونه، به مثال پی‌اچ‌پی زیر دقت داشته باشید. در این کد، یک اینترفیس با نام Animal تعریف شده است که دارای متدی با نام sound است. کلاس Bird از اینترفیس Animal استفاده خواهد کرد تا بتواند با متد sound، صدای موردنظر را در خروجی چاپ کند.

در نهایت، می‌توان با استفاده از کیورد new یک مثال از کلاس Bird ایجاد کرده و توسط آن به متد موردنظر دسترسی داشت:

 

<?php
    interface Animal {
    public function sound();
    }
    class Bird implements Animal {
        public function sound() {
            echo "chek-chek";
        }
    }
    $animal = new Bird();
    $animal -> sound();
?>

 

در مثال دیگر می‌توان سه کلاس به صورت سگ، گربه و پرنده تعریف کرد. یک متد داخل اینترفیس تعریف می‌شود تا در قدم بعدی در کلاس از آن استفاده شود:

 

<?php
  // Interface definition
  interface Animal {
    public function sound();
  }
  // Class definitions
  class Cat implements Animal {
    public function sound() {
      echo "meow ";
    }
  }
  class Dog implements Animal {
    public function sound() {
      echo " bark ";
    }
  }
  class Bird implements Animal {
    public function sound() {
      echo " chek ";
    }
  }
  // Create a list of animals
  $cat = new Cat();
  $dog = new Dog();
  $bird= new Bird();
  $animals = array($cat, $dog, $bird);
  // Tell the animals to make a sound
  foreach($animals as $animal) {
    $animal -> sound();
  }
?>

 

با اجرای این کد پی‌اچ‌پی، در نهایت خروجی متد موردنظر را در ترمینال مشاهده خواهیم کرد:

تفاوت ها و شباهت های Interface و کلاس های انتزاعی

اینترفیس‌ها و کلاس‌های انتزاعی هر دو ابزارهای قدرتمند و ضروری در دنیای برنامه‌نویسی هستند که امکان ساختاربندی و تعریف قراردادها را فراهم می‌کنند. بین این دو قابلیت تفاوت و شباهت‌هایی وجود دارد که در ادامه در مورد آن بیشتر می‌خوانیم:

تفاوت های اینترفیس و کلاس انتزاعی 

یکی از تفاوت‌های اساسی اینترفیس با کلاس انتزاعی در سطوح دسترسی است. در اینترفیس تمامی متدها به صورت عمومی و public هستند و این در حالی است که در کلاس انتزاعی می‌توان از سطوح خصوصی و protected نیز در کنار سطح عمومی استفاده کرد. 

یک کلاس می‌تواند چندین اینترفیس را پیاده‌سازی کند. این در حالی است که یک کلاس تنها می‌تواند از یک کلاس انتزاعی ارث‌بری کند. 

شباهت های اینترفیس و کلاس انتزاعی 

هر دو ابزار اینترفیس و کلاس انتزاعی باید توسط کلاس‌های مشتق شده پیاده‌سازی شوند. همچنین‌، از هیچ‌یک از این قابلیت‌ها نمی‌توان نمونه‌سازی یا همان Instantiate انجام داد. در هر دو ابزار نیاز است تا قراردادهایی تعریف شوند که کلاس‌های تابعه نیز ملزم به رعایت کردن این قراردادها خواهند بود. 

کمی بیشتر در مورد مزایای استفاده از Interface در PHP

با تسلط بر Interface در PHP و آموزش نحوه استفاده از آن به مزایای بسیاری دسترسی خواهید داشت. این قابلیت در زبان‌های مختلف برای بهبود طراحی و نگه‌داری ساختارها به کار می‌رود و با استفاده از آن می‌توان در شرایطی بهینه، قراردادها را تنظیم کرد. تنظیم قراردادها بین کلاس‌ها در برنامه‌های پیچیده از اهمیت بالایی برخوردار است و به همین راحتی نمی‌توان از کنار این موضوع عبور کرد. بر این اساس، هر کلاسی که یک اینترفیس در پی اچ پی پیاده‌سازی کند، وظیفه دارد تا تمامی متدها را تعریف کرده و سپس در صورت نیاز از آن استفاده کند. 

در کنار این مزایا، قابلیت‌های زیر نیز توسط اینترفیس در PHP در اختیار شما قرار خواهد گرفت:

  • استفاده از چند اینترفیس: امکان تعریف و پیاده‌سازی چند اینترفیس برای یک کلاس فراهم است. این به آن معنی است که کلاس‌های برنامه شما منعطف‌تر خواهند بود و در آن‌ها قابلیت استفاده مجدد در اختیار کاربر قرار خواهد گرفت. 
  • تفکیک SoC: تفکیک نگرانی‌ها یکی از اصول برنامه‌نویسی SOLID است که در دنیای امروزی باید به آن دقت زیادی داشته باشیم. با استفاده از این قابلیت امکان تفکیک عملکردهای مختلف برنامه به کلاس‌های جداگانه فراهم خواهد بود. بنابراین، در شرایط بی‌نظیر می‌توان از هم وابستگی‌های پیچیده و دشوار جلوگیری کرد. اینترفیس قابلیت تفکیک SoC را برای شما فراهم خواهد کرد. 
  • سهولت در تست واحد: تست Unit یکی از اصلی‌ترین تست‌ها برای تحلیل عملکرد کدها است که استفاده از اینترفیس در این مرحله نیز مزایای زیادی را به وجود خواهد آورد. با فراهم کردن Mock Objectها شرایط آسان‌تری وجود دارد تا بتوان تست‌ها را انجام داد.
  • انعطاف‌پذیری: ایجاد انعطاف بالا در کدها از مزایایی است که Interface در PHP فراهم خواهد کرد. بنابر این اصل، در صورتی که نیاز به افزایش قابلیت‌های کد احساس شود، به آسانی می‌توان با افزودن کلاس‌های بیشتر این قابلیت‌ها را افزایش داد. 

کاربردهای عملی Interface در پروژه های PHP

کاربردهای Interface در PHP یکی دو تا نیستند و شاید بتوان بیش از ۱۰ کاربرد برای این قابلیت برنامه‌نویسی تعریف کرد. 

طراحی سیستم های ماژولار

اینترفیس در این زبان یکی از اصول اساسی برای طراحی و پیاده کردن سیستم‌های ماژولار است. برای مثال، کد زیر را تصور کنید که ۲ کلاس Paypal و Stripe قرار است از یک متد تعریف شده داخل اینترفیس استفاده کنند. پیاده‌سازی چنین قابلیت‌هایی با اینترفیس بسیار آسان است:

 

<?php
  interface PaymentGateway {
    public function processPayment(float $amount);
    }
    class PayPalPaymentGateway implements PaymentGateway {
        public function processPayment(float $amount) {
            // پیاده‌سازی برای پرداخت با PayPal
        }
    }
    class StripePaymentGateway implements PaymentGateway {
        public function processPayment(float $amount) {
            // پیاده‌سازی برای پرداخت با Stripe
        }
    }
?>

 

پشتیبانی از تغییرات در آینده

یکی دیگر از کاربردهای عملی اینترفیس فراهم کردن تغییرات در آینده است. با به کار بردن چنین قابلیتی در پی‌اچ‌پی، در آینده کد شما از تغییرات و آپدیت‌ها به آسانی پشتیبانی خواهد کرد. به این صورت، اگر نیاز به آپدیت نرم‌افزاری یا modify کردن کدها داشته باشید، اینترفیس دقیقا ویژگی برنامه‌نویسی است که به دنبال آن می‌گردید. 

جمع بندی: Interface در PHP

یکی از مزایای اساسی در زبان‌های برنامه‌نویسی مدرن، استفاده از Interface است. این ساختار کمک زیادی خواهد کرد تا بتوان قوانینی را برای کلاس تعریف کرد و با استفاده از آن به ویژگی‌های اساسی کلاس‌های PHP افزود. شاید در ابتدای کار استفاده از Interface در PHP برایتان کمی دشوار باشد. اما اصلا نگران نباشید چرا که با شروع به کار عملی، در چند هفته به مفاهیم آن و مزایای اینترفیس تسلط پیدا خواهید کرد. 

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
366 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران