۱۳۹۹/۰۴/۱۹

آموزش استفاده از PSR-4 در PHP

استاندارد PSR-4 ۱۳۹۸/۰۶/۰۶

آموزش PHP Composer PSR-4 

PSR-4 یک استاندارد برای کد نویسی به زبان php برای autoloading کلاس ها است.دلیل ایجاد آن استاندارد سازی برای مدریت namespace در کلاس ها و آدرس های فیزیکی کلاس ها میباشد.بطور کلی با اعمال PSR-4 در پروژه های خود از شر  require*/include* بیشمار در پروژه های تحت وب خود خلاص میشود.

کامپوزر در ابتدا برای پیاده سازی استاندارد PSR-0 طراحی و ساخته شد.Composer برای مدیریت وابستگی های پروژه استفاده میشود.و بعنوان یک منبع برای لود کلاس های مختلف در برنامه عمل میکند.

برای autoload کردن کلاس ها یا استاندارد PSR-4  مرحله های مثال زیر را انجام دهید.

در ابتدا کلاس هایی که می خواهیم اتولود کنیم در یک پوشه قرار دهید.بعنوان مثال مرسوم است که کلاس های را در پوشه   vendor قرار می دهند.

your-website/
  src/
    Db.php
    Page.php
    User.php

در قدم بعدی یک فضای نام  یا namespace یکسان به کلاس ها بدهید.بعنوان مثال در اینجا از فضای نام Acme استفاده کرده ام.

<?php

namespace Acme;

class Page {

public function __construct() {

echo "hello, i am a page.";

}

}

برای تمام کلاس های موجود در پوشه src از فضای نام Acme استفاده کنید.

در این مرحله فضای نام کلاس ها یعنی  Acme را به همراه نام پوشه که کلاس هایمان در آن پوشه قرار دارد را در فایل composer.json به شکل زیر تعریف کنید.

{

    "autoload": {

       "psr-4": {

           "Acme\\":"src/"

       }

   }

}

در اینجا از کلید psr-4  استفاده شده 

فضای نام Acme به دایرکتوری /src اشاره میکند.

در انتهای فضای نام \\ استفاده شده مانند : "\\Acme"

در مرحله آخر کامپوزر را با استفاده از دستور زیر به روز رسانی کنید.

$ composer dumpautoload -o

و namespace را به کد های خود اضافه کنید.

<?php

require "vendor/autoload.php";

use Acme\Db;

use Acme\User;

use Acme\Page;

$page1 = new Page();


رای :

PHP

Composer

PSR-4

استاندارد کدنویسی

autoloading

namespace

اصلا هم معلوم نیست از اینجا کپ زدی https://phpenthusiast.com/blog/how-to-autoload-with-composer
مرتضی شعبانی : کدهای نمونه از یک صفحه برداشته بودم ولی انصافا تا اونجا که یادم میاد  این صفحه ای که شما فرستادی نبود :-)

ارسال نظر
Copyright © All right reserved.