میخوای وارد بازار کار بشی و محصولات خودت رو بفرشی همین الان ثبت نام کن
0

Namespaces در PHP

فضای نامی در php یا همان  Namespaces ؛ در ورژن های قبلی php وقتی دو تا کتابخانه  php رو باهم تلفیق میکردیم. احتمال اینکه نام بعضی از کلاس های نوشته شده در هر در کتابخانه یکسان باشه.یعنی هر کدوم از کتابخانه ها مثلا کلاسی به اسم User داستن.خب این نام مشترک مشکل آفرین می شد.

فضای نام‌گذاری (Namespace) این مشکل را حل می‌کند. همان‌طور که در راهنمای رسمی PHP توضیح داده شده است، فضای نام‌گذاری در PHP مانند ساختار دایرکتوری در سیستم‌عامل عمل می‌کند. همان‌طور که دو فایل با نام‌های یکسان در دو دایرکتوری می‌توانند وجود داشته باشند، دو کلاس PHP با نام‌های یکسان در دو فضای نام‌گذاری جداگونه می‌توانند وجود داشته باشند. به همین سادگی!

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

این قابلیت برای این طراحی شده که ۲ مشکل نویسندگان کتابخانه ها و برنامه های کاربردی را حل کند:

  1. آنها می توانند با گروه بندی کلاسهایی که برای انجام یک کار با هم کار می کنند ، سازماندهی بهتری داشته باشند
  2. آنها اجازه می دهند از همین نام برای بیش از یک کلاس استفاده شود

به عنوان مثال ، شما ممکن است مجموعه ای از کلاسها داشته باشید که جدول HTML را توصیف می کنند ، مانند Table ، Row و Cell و همچنین کلاسهای دیگری برای توصیف مبلمان مانند میز ، صندلی و تخت دارید. از فضاهای نامی می توان برای سازماندهی کلاسها به دو گروه مختلف استفاده کرد و در عین حال از مخلوط شدن دو کلاس Table و Table جلوگیری کرد.

فضای نامگذاری (namespace ) مربوط به classes, interfaces, functions وconstants می باشد.یعنی فقط این موارد را می توان داخل namespace ها ذخیره کرد .


اعلام فضای نام

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

نحو

فضایی به نام Html را اعلام کنیم:

namespace Html;

توجه : اعلام namespace باید اولین خط کد باشد که در فایل php نوشته می شود . کد زیر معتبر نیست:

<?php
echo “Hello World!”;
namespace Html;

?>

ثابت ها ، کلاس ها و توابع اعلام شده در این پرونده به فضای نام Html تعلق دارند 

یک کلاس Table در فضای نام Html ایجاد کنیم:

<?php
namespace Html;
class Table {
public $title = “”;
public $numRows = ۰;
public function message() {
echo “<p>Table ‘{$this->title}’ has {$this->numRows} rows.</p>”;
}
}
$table = new Table();
$table->title = “My table”;
$table->numRows = ۵;
?>

<!DOCTYPE html>
<html>
<body>

<?php
$table->message();
?>

</body>
</html>

برای سازماندهی بیشتر ، وجود فضاهای نامی تو در تو امکان پذیر است:

نحو

یک فضای نام به نام Html را در داخل یک فضای نامی به نام Code اعلام کنید:

namespace Code\Html;

استفاده از Namespaces

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

مثال

$table = new Html\Table()
$row = new Html\Row();

هنگامی که از بسیاری از کلاس های یک نام به طور همزمان استفاده می شود ، استفاده از کلمه کلیدی namespace آسان تر است :

مثال

namespace Html;
$table = new Table();
$row = new Row();

نام مستعار فضای نام

برای ایجاد سهولت در نوشتن ، می توان نام مستعار به یک فضای نام یا کلاس داد. این کار با کلمه کلیدی  use انجام می شود :

مثال

نام مستعار به یک فضای نام اختصاص می دهیم:

use Html as H;
$table = new H\Table();

مثال

به کلاس یک اسم مستعار دهید:

use Html\Table as T;
$table = new T();

 

نظراتتون رو زیر همین پست با ما به اشتراک بگذارید.

 

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

×

سلام کاربر عزیز

هر سوالی دارید در این بخش هستیم تا شما رو راهنمائی کنیم

روی لوگومون کلیک کنید

× چطور میتونم کمکتون کنم؟