k2-4u
Well-Known Member
در این مقاله ابتدا از سایت php.net شروع کردم که . بهترین نکات فنی رو داره بعد از اون هم . اگر دوستان علاقه
داشته باشند از تئوری به کاربردی میرسیم
Namespace چیست؟
Namespace چیست؟ معنای کلی namespace ، کپسوله سازی آیتم هاست. بطور مثال در تمام سیستمهای عامل ، دایرکتوری (پوشه ها) برای دسته بندی فایلهای مرتبط بکار میروند و مانند یک namespace برای فایلهای موجود در آن عمل میکنند. بعنوان یک مثال دقیقتر ، فرض کنید که فایل foo.txt در پوشه های home/greg و home/other وجود دارد اما امکان همزیستی دو کپی از فایل foo.txt در یک پوشه وجود ندارد. بعبارت دیگر ، بنابراین برای اینکه از یک دیرکتوری خارج از دایرکتوری home/greg به فایل foo.txt دسترسی پیدا کنیم باید نام دایرکتوری + جداکننده (/) + نام فایل را وارد کنیم. Home/greg/foo.txt . این قانون اصلی namespace در دنیای برنامه نویسی است.
این قابلیت برای این طراحی شده که 2 مشکل نویسندگان کتابخانه ها و برنامه های کاربردی را حل کند:
1. جلوگیری از name collision ( جلوگیری از نامگذاری مشابه برای توابع یا کلاسها یی که ایجاد کرده اید با کلاسها و توابع داخلی php)
2. کوتاه کردن نامهای طولانی که برای کلاسها ایجاد کرده اید برای خوانایی بهتر کد.
اين طرح مانع از آن می شود تا کلاس هايی که برای متدها و خصوصيات از يک شناسه يکسان استفاده می کنند تداخل داشته باشند.
namespace ها از php 5.3.0 به بعد قابل دسترس هستند.
(منبع : http://wiki.iranphp.org/Namespaces_overview که ترجمه http://ir.php.net/manual/en/language.namespaces.rationale.php است )
در حقیقت namespace ها مثل فولدر های هستند که . شما کد ها رو
در اونا قرار میدین .
شما ساختار namespace ها رو دقیقن با ساختار فایل ها در سیستم عامل ها
مقایسه کنید
داشته باشند از تئوری به کاربردی میرسیم
Namespace چیست؟
Namespace چیست؟ معنای کلی namespace ، کپسوله سازی آیتم هاست. بطور مثال در تمام سیستمهای عامل ، دایرکتوری (پوشه ها) برای دسته بندی فایلهای مرتبط بکار میروند و مانند یک namespace برای فایلهای موجود در آن عمل میکنند. بعنوان یک مثال دقیقتر ، فرض کنید که فایل foo.txt در پوشه های home/greg و home/other وجود دارد اما امکان همزیستی دو کپی از فایل foo.txt در یک پوشه وجود ندارد. بعبارت دیگر ، بنابراین برای اینکه از یک دیرکتوری خارج از دایرکتوری home/greg به فایل foo.txt دسترسی پیدا کنیم باید نام دایرکتوری + جداکننده (/) + نام فایل را وارد کنیم. Home/greg/foo.txt . این قانون اصلی namespace در دنیای برنامه نویسی است.
این قابلیت برای این طراحی شده که 2 مشکل نویسندگان کتابخانه ها و برنامه های کاربردی را حل کند:
1. جلوگیری از name collision ( جلوگیری از نامگذاری مشابه برای توابع یا کلاسها یی که ایجاد کرده اید با کلاسها و توابع داخلی php)
2. کوتاه کردن نامهای طولانی که برای کلاسها ایجاد کرده اید برای خوانایی بهتر کد.
اين طرح مانع از آن می شود تا کلاس هايی که برای متدها و خصوصيات از يک شناسه يکسان استفاده می کنند تداخل داشته باشند.
PHP:
<?php
namespace my\name; // see "Defining Namespaces" section
class MyClass {}
function myfunction() {}
const MYCONST = 1;
$a = new MyClass;
$c = new \my\name\MyClass; // see "Global Space" section
$a = strlen('hi'); // see "Using namespaces: fallback to global
// function/constant" section
$d = namespace\MYCONST; // see "namespace operator and __NAMESPACE__
// constant" section
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // see "Namespaces and dynamic language features" section
?>
(منبع : http://wiki.iranphp.org/Namespaces_overview که ترجمه http://ir.php.net/manual/en/language.namespaces.rationale.php است )
در حقیقت namespace ها مثل فولدر های هستند که . شما کد ها رو
در اونا قرار میدین .
شما ساختار namespace ها رو دقیقن با ساختار فایل ها در سیستم عامل ها
مقایسه کنید
آخرین ویرایش: