شما اینجا هستید

شناخت PSR-4 در دروپال 8

به عنوان یک توسعه دهنده دروپال یکی از اولین مفاهیمی که در دروپال 8 باید آنرا درک کنید ، PSR-4 می باشد.
البته نه تنها دروپال بلکه در بیشتر فریم ورک های پیشرفته PHP شما نیاز دارید که از این سبک کد نویسی استفاده کنید.
دروپال 8 همانند بسیاری از فریم ورک های بزرگ دنیا ، برای اینکه از استاندارد های برنامه نویسی روز دنیا پیروی کند سبک کد نویسی خود را به PSR-4 تغییر داده است. توسعه دهندگان دروپال در ابتدا از سبک PSR-0 برای برنامه نویسی هسته دروپال 8 استفاده کردند که پس از گذشت زمان کوتاهی کدها را کاملا به PSR-4 تغییر داده و فریم ورک قوی سیمفونی را نیز وارد عمل کردند.
این سبک کد نویسی به شما اجازه می دهد تا کلاس های PHP را بصورت خودکار یافته و آنها را بارگذاری کنید بدون آنکه منابع زیادی را درگیر نمایید.
در ادامه با مثال به شما توضیح میدهیم که سبک کد نویسی PSR-4 به چه نحوه ای عمل میکند و چه تفاوت هایی با سبک های دیگر کد نویسی PHP دارد.

فرض کنید میخواهیم از یک کلاس در میان کدهای خود استفاده کنیم. کافیست یک متغیر برای آن تعریف نماییم.
$object = new MyClass(); 

اما اگر این کلاس در یک فایل در کنار کدهای دیگری قرار گرفته باشد در ابتدا نیاز داریم فایل مربوطه را فراخوانی کرده و سپس از کلاس خود استفاده کنیم:
require_once 'path/mymodule.class.inc';
$object = new MyClass();

ما همه می دانیم که تنها بخشی از کدهای آن فایل مورد استفاده قرار میگیرد اما کدهای موجود در فایل بطور کامل بارگذاری می شوند. راه حل رفع این مشکل استفاده از PSR-4 خواهد بود.

البته در دروپال 7 فراخوانی فایل به روشی دیگر انجام می شد بطوری که تنها بخشی از کدهای موجود در فایل بارگذاری می شدند و این عمل دقیقا مشابه کاری است که PSR-4 انجام میدهد، اما قدرت PSR-4 بسیار فراتر از کاری است که در دروپال 7 انجام می شد.
module_load_include('inc', 'mymodule', 'mymodule.class');
$object = new MyClass();  .

PSR-4 با تکیه بر تکنولوژی جدید PHP Autoloading Classes که برای بارگذاری کلاس ها کاربرد دارد ، بطوری هوشمندانه عمل کرده و با توجه به درخواست ارسالی، تنها قطعه کدی که مورد نیاز است را بارگذاری می نماید. این عمل باعث میگردد در هر بار درخواست به فایل ها ، تنها کدهای مورد نیاز بارگذاری شده و در نتیجه منابع کمتری نیز درگیر درخواست ها شوند. این عمل باعث افزایش سرعت نرم افزار نهایی خواهد شد.

برای شناخت PSR-4 در ادامه آنرا در عمل توضیح می دهیم.

هر افزونه دروپال یک نیم اسپیس دارد که در بر دارنده نام افزونه است:
Drupal\Name

نیم اسپیس هر افزونه اشاره به دایرکتوری src آن افزونه دارد:
Drupal\Name → modules/Name/src/

هر چیزی که بعد از نیم اسپیس قرار گرفته باشد مستقیما به دایرکتوری و فایل اشاره دارد:
Drupal\Name\Directory\File → modules/Name/src/Directory/File.php

اکنون اگر بخواهید از کلاس موجود در فایل خود استفاده کنید کافیست تنها کلاس خود را در متغیر قرار دهید و از آن استفاده کنید:
$object = new Drupal\Name\Directory\File();
$object->DoAction();

جالبتر اینجاست که ما تنها به کدهای مورد نیازمان در یک فایل خارجی دست یافته ایم، بدون اینکه آن فایل یا دایرکتوری را وارد کرده یا کدهای اضافی را فراخوانی کنیم:
namespace Drupal\Name\Directory class File extends Drupal {
   public function putOn() {
   // کدها در اینجا قرار میگیرند
   }
}