فضای نام در پروژه های لاراول

۱۴ فروردین ۱۳۹۷

طراحی سایت

همانند بسیاری از زبان ها، PHP به شما اجازه نمی دهد دو کلاس با یک نام در سطح کل پروژه(global) داشته باشید. در حالی که این یک ایده خوب است، هنگامی که شما کتابخانه ها را ایجاد می کنید، یک مشکل وجود دارد (تکمیل کتابخانه ها دارای یک یا چند کلاس همان نام). برای حل این مسئله، مفهوم "فضاهای نام"(name spaces) در PHP 5.3 اضافه شد.

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

فرض کنید کلاس زیر را در پروژه لاراول خود می خواهیم اضافه کنیم:


<?php
class UserOptions
{
    public function getOptions()
    {
    …...
    }
}

برای تعریف یک فضای نام، از کلمه کلیدی نام فایل استفاده کنید و سپس یک شناسه مسیر را انتخاب کنید. در اینجا من از App \ Utilities برای تعریف کلاس UserOptions استفاده کردم:


<?php
namespace App\Utilities;

class UserOptions
{

    public function getOptions(User $user)
    {
    …...
    }

می توان به دو روش آن را فرا خوانی کنیم:


$userOption = new \App\Utilities\UserOptions();
$options = $userOption->getOptions();

یا


use App\Utilities;

$userOption = new UserOptions();
$options = $userOption->getOptions();

اگر ما در حال تلاش برای استفاده از کلاس از داخل فضای نام دیگری هستیم، کلمه کلیدی "use" باید تا نام کلاس صدا زده شود:


use App\Utilities\UserOptions;

این کار اجازه می دهد تا کامپایلر نام کلاس صحیح را از فضای نام صحیح وارد کند. اجازه دهید یک مثال دیگر در کدهای زیر ببینیم:


<?php

namespace App\ThirdParty\Invoicing;

Class UserOptions
{
    public function getOptions()
    {
    ….
    }
}

حالا استفاده دو کلاس همنام را به شما نشان می دهیم:


<?php

Class TestExample
{

    public function BillingRun()
    {
    ….
    $userOptions = new App\Utilities\UserOptions();
    $billingOptions = new App\ThirdPaty\Invoicing\UserOptions();
    ...
    }
}

یا


<?php

use App\Utilities\ as Util;
use App\ThirdPaty\Invoicing as Billing;

Class TestExample
{

    public function BillingRun()
    {
        ….
        $userOptions = new Util\UserOptions();
        $billingOptions = new Billing\UserOptions();
        ...
    }
}

 نویسنده:حمید شاه محمدی
 تعداد مشاهده خبر:(368)
 هر روز از مقاله های جدید طراحی سایت در کانال تلگرام ما با خبر شوید

 میانگین امتیازات:
 
  تعداد رای دهندگان: {{ count }}
نظرات:

{{ x }}
{{ alert }}

نویسنده:{{ com.name }}
{{ com.body }}
{{ com.created_at }}