آشنایی با PHP Standards Recommendations – PSR در PHP

توابع AUTOLOADING
نام استاندارد :
PSR-4: Improved Autoloading
کلاس ها قبل از استفاده باید تعریف شوند ، اما استفاده بار ها پیش آمده که ما می آیم و آن ها را تک به تک درون ریزی می کنیم درون فایل PHP مورد نظر و قاعدتا برای هر کلاس یک فایل استفاده می کنیم و زمانی این کار بسیار پیچیده خواهد شد که کلاس آماده را یکی پس از دیگری باید درونریزی کنید به طور مثال با توابع :
require 'ClassName.php';
نحوه استفاده در توابع autoloading :
<?php use Vendor\Package\ClassName; $object = new ClassName();
خب برای زبانی با پیچیدگی PHP این کار باید یک میانبر هم داشته باشد ! برای این کار می توانیم از توابع autoloading استفاده کنیم در درصورت نیاز تنها با استفاده از عبارت use کلاس مورد نظر را صدا زده و تنها نام کلاس را مشخص کنیم ٬ فواید : ساده شدن پیچیدگی های درون ریزی ٬ قابل خواندن شدن کد های ما و بهینه تر شدن کد برای کامپایلر PHP .
توابع INTERFACES
نام استاندارد :
PSR-3: Logger Interface
رابط مشترک برای ورود به کتابخانه ها را توصیف می کند
PSR-6: Caching Interface
توسعه دهندگان کتابخانه کشینگ می توانند روی سیستمهای حافظه پنهانی کشینگ کار کنند
PSR-11: Container Interface
روابط بین interface را تنیم می کند
PSR-13: Hypermedia Links
روابط بین Interface در api ها را تنظبم می کند
PSR-14: Event Dispatcher
روابط بین Events در PHP تنظیم می کند
PSR-16: Simple Cache
روابط بین کتابخانه های کشینگ را تنظیم می کند
خب این توابع از یک سری قوانین برای به اشتراک گذاری در کد ها استفاد می شود به طور مثال زمانی که شما می خواهید یک کلاس فقط قابلیت والد بودن (پدر بودن) را داشته باشد ! نمونه بارز آن همان تابع interface و abstract در کلاس ها است !
نمونه :
<?php interface Car{ public function getName($value); public function getSpeed($value); } class BMW implements Car{ public $name; public $speed; public function getName($value){ $this->name= $value; return true; } public function getSpeed($value){ $this->speed= $value; return true; } public function info(){ return $this->name.": ".$this->speed."KM"; } } $NewBMW= new BMW(); $NewBMW->getName("BMW X3"); $NewBMW->getSpeed("240"); echo $NewBMW->info(); ?>
و
<?php abstract class Car{ public $name; public function __construct($value){ $this->name = $value; } } class Bmw extends Car{ } $BMW_M3 = new BMW("BMW M3"); var_dump($BMW_M3); ?>
توابع HTTP
نام استاندارد :
PSR-7 : HTTP Message Interfaces
این سند واسط های رایج برای نمایش پیام های HTTP را توصیف می کند
PSR-15 : HTTP Handlers
این تابع روابط HTTP در سمت سرور را تنظیم می کند
PSR-17 : HTTP Factories
این تابع یک استاندارد مشترک برای نولید کننده هایی را ایجاد می کند که اشیاء HTTP سازگار با PSR-7 را ایجاد می کنند.
PSR-18 : HTTP Client
استانداردها و رابط های متقابل برای دستیابی و رسیدگی به درخواست ها و پاسخ های HTTP ، از طرف کلاینت و سرور را تنظیم می کند .
CODING STYLES
PSR-1 : Basic Coding Standar
PSR-12: Extended Coding Style Guide
دیدگاهتان را بنویسید