تالار گفتمان nCIS.ir

نسخه‌ی کامل: Namespaces چی هستش؟
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام.
Namespaces چی هستش و چه کاربردی دارد؟
namespace یا فضای نام برای دسته بندی کلاسها توی یه فضای جداگانه است تا بتونید به راحتی کلاسها رو گروهبندی کنید و از اسامی تکراری هم جلوگیری بشه. برای مثال، توی پروژه های تیمی بزرگ احتمال اینکه دو نفر، کلاسی با نام یکسان طراحی کنن زیاده. حالا اگه توی پروژه همزمان هر دو فایل حاوی این کلاسها ضمیمه بشه، خطای Cannot redeclare class تولید میشه و برنامه Crash میکنه. برای حل این مشکل میشه هرنفر کلاسهای خودش رو توی فضای نام دلخواه خودش قرار بده. اینطوری دیگه مشکلی پیش نمیاد. مثلاً یکنفر میتونه کلاسش رو اینطوری بسازه:
namespace ali;

class Greeting
{
    // ...
}

و یکنفر دیگه هم به این شکل کلاس خودش رو بسازه:
namespace reza;

class Greeting
{
    // ...
}

حالا اگه هر دو فایل رو ضمیمه کنید، خطا دریافت نمیکنید. تنها کاری که باید انجام بدین اینه که موقع ایجاد شئ، بگین از کدوم فضای نام میخواین استفاده کنین:
$aliGreeting = new aliGreeting;
$rezaGreeting = new rezaGreeting;

حتی اگه اصول PSR-0 و PSR-4 رو رعایت کنید، میتونید Autoloader خاصی بنویسید که کلاسها رو از توی پوشه های مختلف براساس فضای نامشون پیدا میکنه و بطور خودکار ضمیمه میکنه.
(19-04-1394، 03:29 ق.ظ)ADMIN نوشته: [ -> ]حتی اگه اصول PSR-0 و PSR-4 رو رعایت کنید،

در این مورد یه توضیحی میدید
مرسی
به این سایت سر بزنید: http://php-fig.org و از سمت راست، PSR-0 و PSR-4 رو بخونید. کلاً قوانین PSR رو بخونید و توی کدنویسی رعایت کنید خیلی خوبه.