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

کلاس ها و فضاهای نام

کلاس های NET Framework

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

کلاس های هسته دات نت مجموعه عظیمی از کلاس های کد مدیریت شده را ارائه می دهند که به شما امکان می دهد تقریباً هر مشکلی را که قبلاً با استفاده از API ویندوز حل می شد حل کنید. همه این کلاس‌ها از یک مدل شی IL با وراثت واحد پیروی می‌کنند. این بدان معنی است که شما می توانید از هر یک از کلاس های پایه دات نت اشیاء ایجاد کنید یا کلاس های خود را از آنها به ارث ببرید.

چیزی که کلاس های پایه دات نت را متفاوت می کند این است که به گونه ای طراحی شده اند که بصری و آسان برای استفاده باشند. برای مثال، برای شروع یک رشته باید متد ()Start کلاس را فراخوانی کنید نخ. برای اینکه یک شی TextBox در دسترس نباشد، ویژگی Enabled شی را روی false قرار دهید. این رویکرد که برای توسعه دهندگان ویژوال بیسیک و جاوا که استفاده از کتابخانه های آنها به همان اندازه آسان است آشنا است، برای توسعه دهندگان ++C که سال ها با توابع API مانند GetDIBits()، RegisterWndClassEx() و IsEqualIID() مبارزه کرده اند، تسکین بزرگی خواهد بود. و همچنین بسیاری از عملکردهایی که نیاز به عبور از دستگیره های پنجره داشتند.

با این حال، توسعه دهندگان ++C همیشه دسترسی آسانی به مجموعه کامل APIهای ویندوز داشته اند، در حالی که توسعه دهندگان ویژوال بیسیک 6 و جاوا به عملکرد اصلی سیستم عامل که از زبان خود دسترسی دارند محدود شده اند. کلاس های پایه دات نت سهولت استفاده از کتابخانه های ویژوال بیسیک و جاوا را با پوشش نسبتاً کامل مجموعه ویژگی های Windows API ترکیب می کنند. بسیاری از ویژگی‌های ویندوز از طریق کلاس‌های پایه قابل دسترسی نیستند و در این موارد باید به توابع API متوسل شوید، اما به طور کلی این فقط برای عجیب‌ترین توابع اعمال می‌شود. برای استفاده روزمره، مجموعه ای از کلاس های پایه به طور کلی کافی خواهد بود. اما اگر شما نیاز به فراخوانی یک تابع API دارید، دات نت به اصطلاح را ارائه می دهد مکانیسم فراخوانی پلت فرم، که تبدیل صحیح نوع داده را تضمین می کند، بنابراین اکنون این کار دشوارتر از فراخوانی مستقیم این توابع از کد ++C نیست، صرف نظر از اینکه کد به چه زبانی نوشته شده است - C#، C++ یا Visual Basic 2010.

فضاهای نام

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

فضای نام چیزی بیش از گروهی از انواع داده نیست، اما این تأثیر را دارد که نام همه انواع داده در فضای نام به طور خودکار با نام فضای نام پیشوند می شود. فضاهای نام را می توان درون یکدیگر تودرتو کرد. به عنوان مثال، بیشتر کلاس های پایه دات نت همه منظوره در فضای نام یافت می شوند سیستم. کلاس پایه آرایهبه این فضا اشاره دارد، بنابراین نام کامل آن است System.Array.

پلت فرم دات نت مستلزم این است که همه نام ها در یک فضای نام اعلان شوند. به عنوان مثال می توانید کلاس خود را قرار دهید کلاس منبه فضای نام شرکت من. سپس نام کامل این کلاس شبیه به آن خواهد بود MyCompany.MyClass.

توجه داشته باشید که اگر فضای نامی به طور صریح مشخص نشده باشد، نوع آن به فضای نام جهانی بی نام اضافه می شود.

در اکثر مواقع، مایکروسافت استفاده از حداقل دو فضای نام تودرتو را توصیه می‌کند: اولی نام شرکت شما، و دومی نام فناوری یا بسته نرم‌افزاری است که کلاس به آن تعلق دارد، بنابراین چیزی شبیه به این است: MyCompany.SomeNamespace .کلاس من. در بیشتر موارد، این رویکرد از کلاس های برنامه شما در برابر تضادهای احتمالی با نام کلاس های نوشته شده توسط توسعه دهندگان شرکت های دیگر محافظت می کند.

جدول زیر فهرست کوتاهی از برخی (اما نه همه) فضاهای نام ارائه شده در دات نت است که بر اساس عملکرد به گروه هایی تقسیم شده اند:

فضاهای نام کلید دات نت فریم ورک
فضای نام در دات نت شرح
سیستم داخل فضای نام سیستمشامل بسیاری از انواع مفید برای برخورد با داده های داخلی، ریاضی، تولید اعداد تصادفی، متغیرهای محیطی، و جمع آوری زباله، و همچنین تعدادی از استثناها و ویژگی های رایج است.
System.Collections
System.Collections.Generic
این فضاهای نام شامل تعدادی از انواع کانتینر و همچنین چندین نوع پایه و رابط هستند که به شما امکان ایجاد مجموعه های ویژه را می دهند.
سیستم.داده
System.Data.Common
System.Data.EntityClient
System.Data.SqlClient
این فضاهای نام برای تعامل با پایگاه های داده با استفاده از ADO.NET استفاده می شود
System.IO
System.IO.Compression
System.IO.Ports
این فضاها شامل انواع مختلفی هستند که برای مدیریت فایل ورودی/خروجی، فشرده سازی داده ها و دستکاری پورت طراحی شده اند.
سیستم.انعکاس
System.Reflection.Emit
این فضاهای نام حاوی انواعی هستند که از کشف نوع زمان اجرا و همچنین ایجاد نوع پویا پشتیبانی می کنند
System.Runtime.InteropServices این فضای نام حاوی ابزارهایی است که می توانید به انواع دات نت اجازه دهید با "کدهای مدیریت نشده" (مانند DLL های مبتنی بر C و سرورهای COM) و بالعکس تعامل داشته باشند.
سیستم.طراحی
System.Windows.Forms
این فضاهای نام حاوی انواعی هستند که برای ساخت برنامه های دسکتاپ با استفاده از مجموعه ابزار گرافیکی NET (فرم های ویندوز) بومی استفاده می شوند.
سیستم.ویندوز
System.Windows.Controls
System.Windows.Shapes
فضا سیستم.ویندوزریشه در میان این چندین فضای نام است که مجموعه ای از ابزارهای گرافیکی Windows Presentation Foundation (WPF) را نشان می دهد.
System.Linq
System.Xml.Linq
System.Data.DataSetExtensions
این فضاهای نام حاوی انواعی هستند که هنگام برنامه نویسی با استفاده از LINQ API استفاده می شوند
سیستم.وب این فضای نام یکی از تعداد زیادی است که به شما امکان می دهد برنامه های تحت وب ASP.NET ایجاد کنید
System.ServiceModel این فضای نام یکی از بسیاری از مواردی است که می توانید برای ایجاد برنامه های کاربردی توزیع شده با استفاده از Windows Communication Foundation (WCF) API استفاده کنید.
System.Workflow.Runtime
سیستم. گردش کار. فعالیت ها
این دو فضای نام، نمایندگان اصلی بسیاری از فضاهای نام هستند که شامل انواع مورد استفاده برای ساخت برنامه‌های دارای جریان کار با استفاده از Windows Workflow Foundation (WWF) API هستند.
System. Threading
System.Threading.Tasks
این فضای نام شامل انواع بی‌شماری برای ساخت برنامه‌های چند رشته‌ای است که می‌توانند بار کاری را در چندین CPU توزیع کنند.
سیستم.امنیت امنیت در دنیای دات نت ذاتی است. فضاهای نام مرتبط با امنیت شامل انواع مختلفی هستند که با مجوزها، امنیت رمزنگاری و غیره سروکار دارند.
System.Xml این فضای نام مبتنی بر XML شامل انواع متعددی است که می‌توان از آنها برای تعامل با داده‌های XML استفاده کرد

نقش فضای ریشه مایکروسافت

هنگام بررسی فهرست موجود در جدول، به راحتی متوجه شد که فضای نام System ریشه تعداد مناسبی از فضاهای نام تودرتو (مانند System.IO، System.Data و غیره) است. همانطور که مشخص است، با این حال، علاوه بر System، کتابخانه کلاس پایه تعدادی دیگر از فضای نام ریشه سطح بالا را نیز ارائه می دهد که مفیدترین آنها فضای نام مایکروسافت.

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

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

شناسه ها در ارتباط با یکدیگر آزادانه در دسترس هستند. آنها هنگام استفاده از فرمت نام کامل، دسترسی رایگان به اعضای مستقل دارند.

برای این بسیار مهم استبه طوری که شی شامل فرم کامل نام با استفاده از namespace std باشد. این مهم برای درک بصری این است که اعلان وقتی در نام فضا قرار می گیرد چگونه به نظر می رسد.

تصویر چندین گونه از دسترسی به رمزگذاری ها را نشان می دهد، واقع در داخل و خارج از حصارهای آن:

1 این چیزی است که به نظر می رسد نام و نام خانوادگی:

2 به منظور تکمیل یک آگهی موجود، اضافه کردن با استفاده از:

3 برای افزودن تمام شناسه های موجود، از دستورالعمل مناسب استفاده کنید:

با استفاده از دستورالعمل

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

نیازی به تعیین واجد شرایط نیست.

باید از فایل با فرمت cpp استفاده کنید.با این حال، یک شرط مهم وجود چندین شناسه است.

در موردی که فقط چند نام وجود دارد، ایجاد یک نام معمولی مرتبط خواهد بود.

سپس می توانید فقط شناسه های لازم را اضافه کنید و بقیه را به حال خود رها کنید.

توجه به این نکته ضروری است که اگر نام متغیر محلی و اصلی با هم مطابقت داشته باشند، در این صورت اولین مورد در دسترسی مخفی خواهد بود.

لطفا توجه داشته باشید که ایجاد متغیرهایی با همین نام غیرقانونی است.

نصیحت!برای سهولت استفاده، دستورالعمل use را می توان در بالای فایل فرمت cpp. یا برعکس، در داخل کتابخانه ایجاد شده قرار داد.

برای اطمینان از راحت ترین شرایط کاری برای خود، می توانید روی قرار دادن فایل های لازم کار کنید.

جز در موارد ضروری، دستورالعمل استفاده نباید قرار داده شود در هدر در فایل فرمت H.

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

برای فایل ها، بهترین راه حل استفاده از نام کامل است.

در صورتی که معلوم شد که آنها خیلی طولانی هستند، می توانید از اختصارات به شکل نام مستعار استفاده کنید.

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

مرسوم است که تبلیغات را به صورت نام فایل درج می کنند. در صورتی که اجرای توابع مشخص شده در یک کتابخانه یا فایل جداگانه قرار دارد، تعیین نام کامل مهم است.

برای درک اینکه در مورد چه اقداماتی صحبت می کنیم، ارزش دارد تصویر زیر را بررسی کنید:

برای پیاده سازی تابع contosodata فرمت cpp، استفاده از نام کامل در مورد نیز مهم است هنگامی که دستورالعمل در ابتدای کار است:

استفاده از namespace std. ممکن است حاوی تبلیغات در چندین بخش در یک فایل باشد.

با توجه به کامپایلر، در حالی که داده ها در حال پردازش هستند، همه عناصر ترکیب می شوند.

بنابراین، به عنوان مثال، std.، به عنوان یک قاعده، در تمام سرصفحه های فایل های قابل دسترسی واقع در کتابخانه های قابل دسترس از نوع استاندارد اعلام می شود.

اعضایی که با یک نام کاملاً واجد شرایط تعیین می شوند، می توانند نه تنها در فضای نام، بلکه در خارج از آن نیز در صورتی که دارای صلاحیت صریح باشند، تعریف شوند.

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

به عنوان مثال تصویری به تصویر زیر توجه کنید:

بیشتر اوقات، این خطا زمانی ظاهر می شود که ترتیب تعریف نقض شود یا اجزای تشکیل دهنده نام کامل بلافاصله در اشیاء موجود گنجانده شوند.

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

نصیحت!توصیه می شود در صورت لزوم، از گنجاندن اعضا در فضای نوع جهانی خودداری شود.

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

برای ایجاد یک شناسه نوع جهانی، باید از قابلیت مشاهده متناظر در قالب یک نام کامل استفاده کنید.

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

این به شما در درک کد کمک می کند.

Space std.

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

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

صحبت از اعضای والدین شد، آنها چنین عملکردی ندارند.

برای گسترش، پیوست های داخلی مورد نیاز است.

برای تعریف و درک دقیق تر، به تصویر زیر توجه کنید:

محصور کردن اطلاعات برای پیاده سازی بیشتر، همچنین می تواند بخشی از یک فضای تو در تو معمولی باشد و به عنوان یک رابط نوع باز در فضای والد عمل کند.

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

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

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

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

با بهره برداری از فضاهای داخلی، امکان مدیریت نسخه های مختلف رابط در کتابخانه های استاندارد وجود دارد.

ایجاد یک فضای والد تک و کپسوله کردن هر رابط ارائه شده امکان پذیر است.

با این حال، باید در قالب یک پیوست در فضای والد مشترک باشد.

سپس کد کلاینت به صورت خودکار به ترکیب جدید اختصاص داده می شود.

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

برای انجام این کار، باید مسیر کامل پیوست را ایجاد کنید.

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

بیایید به مثال زیر از دو گزینه رابط نگاه کنیم، جایی که هر کدام دارای فضا هستند. کد کلاینت قابلیت بهره برداری از کتابخانه های جدید را نیز دارد.

برای تجسم فرآیند بیایید به تصویر زیر برویم:

همه نام ها باید بسیار منحصر به فرد باشند، بنابراین طول آنها به طور قابل توجهی افزایش می یابد.

با این حال، در اینجا امکان استفاده از دستورالعمل استفاده وجود ندارد.

تنها امکان ایجاد نام مستعار برای فضای نام وجود دارد.

در این مورد به مثال زیر توجه کنید:

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

چنین طیف سرزمینی ناشناس نامیده می شود.

به عنوان یک قاعده، در شرایطی استفاده می شود که اعضای موجود در اعلان باید برای رمزگذاری در اشیاء دیگر نامرئی باشند.

کل ساختار، زمانی که همه شناسه ها قابل مشاهده باشند، در خارج از فضای ایجاد شده، نامرئی خواهند ماند.

شایان ذکر است، که فضای نام خود خارج از بلوک نیز نامرئی خواهد بود، بنابراین هر کاربر باید از قبل به این جزئیات توجه داشته باشد.

به طور معمول، استفاده از دانش برای کسانی که در Visual C++ کار می کنند مورد نیاز است.

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

فضای نام در C++ چیست؟

فضای نام راهی برای گروه بندی اعلان های منطقی مرتبط با هم تحت یک نام مشترک است.

مثال فضای نام:

// @author Subbotin B.P..h" فضای نام اول ( int a; float b; ) فضای نام دوم ( int a; float b; ) int _tmain(int argc, _TCHAR* argv) ( اول::a = 1؛ دوم:: a = 2؛ اول::b = 1.23؛ دوم::b = 4.56؛ printf("\nاول::a = %d\n"، اول::a); printf("\nدوم::a = %d \n"، دوم::a)؛ printf("\nاول::b = %.2f\n"، اول::b)؛ printf("\nدوم::b = %.2f\n\n"، دوم::ب)؛ بازگشت 0؛ )

ما گرفتیم:

در مثال، دو فضای نام ایجاد می شود: اول و دوم. هر دو فضا حاوی متغیرهای یکسانی هستند. اما دقیقاً این واقعیت است که برای مثال، متغیر a ابتدا به فضا تعلق دارد که اجازه نمی‌دهد آن را با متغیری از فضای نام دیگر اشتباه گرفته شود. این از تضاد نام جلوگیری می کند.

به این معنی که از متغیر int a در اولین فضای نام استفاده شده است. این نمونه ای از اعلان استفاده است. عملگر :: عملگر محدوده نامیده می شود.

فضاهای نام با استفاده از کلمه کلیدی فضای نام ایجاد می شوند:

ابتدا فضای نام (int a; float b; )

برای استفاده از همه نام ها از یک فضای نام، می توانید از دستور استفاده از فضای نام استفاده کنید. مثالی از استفاده از namespace std:

با استفاده از namespace std. int _tmain(int argc، _TCHAR* argv) (cout<<"\n using namespace std \n"<

استفاده از namespace std به شما امکان می دهد از نام های فضای نام std استفاده کنید. std نام کتابخانه استاندارد C++ است.

اگر در آخرین مثال، رشته اتصال فضای نام را با استفاده از namespace std حذف کنیم، باید نام فضای نام را به صراحت مشخص کنیم:

// @author Subbotin B.P..h" #include int _tmain(int argc, _TCHAR* argv) ( std::cout<<"\n using namespace std \n"<

فضای نام محدوده را مشخص می کند. مثال ها به صراحت فضاهای نام را تعریف کردند. در اینجا نمونه های دیگری از فضاهای نام وجود دارد. محدوده درون یک تابع نیز یک فضای نام است. دامنه متغیرهای سراسری نیز یک فضای نام است. یک کلاس نیز یک فضای نام است.

ایجاد فضای نام بدون نام امکان پذیر است. مثال:

// @author Subbotin B.P..h" فضای نام ( int a; int b; ) int _tmain(int argc, _TCHAR* argv) (a = 5; b = 8; printf("\n a = %d\n"، a )؛ printf("\n b = %d\n\n"، b)؛ بازگشت 0؛ )

این به معنای استفاده از دستورالعمل استفاده از فضای نام است. چنین فضای نامی برای جلوگیری از تضاد نام احتمالی مورد نیاز است.

اگر نام فضای نام خیلی طولانی است، می توانید یک نام مستعار برای فضای نام ایجاد کنید. مثال:

// @author Subbotin B.P..h" فضای نام زیرزمینی ( int a; int b; ) فضای نام ug = زیرزمینی؛ int _tmain(int argc, _TCHAR* argv) ( ug::a = 5; ug::b = 8; printf ("\n ug::a = %d\n"، ug::a)؛ printf("\n ug::b = %d\n\n"، ug::b)؛ بازگشت 0؛ )

فضای نام ug = زیرزمینی;

نام مستعار ug را برای فضای نام زیرزمینی معرفی می کند. بعد با نام مستعار کار می کنیم.

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

// @author Subbotin B.P..h. _TCHAR* argv) (ug::a = 5; ug::b = 8; printf("\n ug::a = %d\n"، ug::a); printf("\n ug::b = %d\n\n"، ug::b؛ بازگشت 0؛ )

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

فضای نام را می توان تغییر داد، یعنی. تبلیغات جدید به آن اضافه کنید. مثال:

// @author Subbotin B.P..h" فضای نام زیرزمینی ( int a; int b; ) فضای نام زیرزمینی ( float c; ) int _tmain(int argc, _TCHAR* argv) ( underground::a = 5; underground::b = 8 ; underground::c = 1.2; printf("\n underground::a = %d\n", underground::a); printf("\n underground::b = %d\n", underground::b ); printf("\n underground::c = %.1f\n\n"، underground::c); return 0; )

ما گرفتیم:

فضاهای نام را می توان تو در تو قرار داد. مثال:

// @author Subbotin B.P..h" فضای نام بالایی ( int a; int b; فضای نام داخلی ( float c; ) ) int _tmain(int argc, _TCHAR* argv) (بالا::a = 5؛ بالا::b = 8 ; بالا::داخلی::c = 1.2; printf("\n بالا::a = %d\n"، بالا::a); printf("\n بالا::b = %d\n"، بالا ::b)؛ printf("\n upper::inner::c = %.1f\n\n"، upper::inner::c)؛ بازگشت 0؛ )

ما گرفتیم:

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

بالا::داخلی::c = 1.2;

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

// @author Subbotin B.P..h" #include با استفاده از namespace std. int nVar; int _tmain(int argc, _TCHAR* argv) ( int nAnotherVar = 1; ::nVar = 5; cout<<"\n nAnotherVar = "<

مهم است که تفاوت بین استفاده از اعلامیه ها و استفاده از دستورالعمل ها را مشاهده کنید.
یک اعلان استفاده، یک متغیر را در محدوده محلی در دسترس قرار می دهد، به عنوان مثال. اعلام نام محلی رخ می دهد. دو راه برای اعلام یک متغیر محلی وجود دارد: عادی یا استفاده از یک اعلان استفاده.

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

اعلان استفاده بر دستورالعمل استفاده ارجحیت دارد.

بیایید به یک مثال نگاه کنیم:

// @author Subbotin B.P..h" فضای نام sbp ( int a; int b; int c; ) int a; int _tmain(int argc, _TCHAR* argv) ( int a؛ با استفاده از فضای نام sbp؛ a = 1؛ sbp:: a = 2; ::a = 3; printf("\n a = %d\n"، a); printf("\n sbp::a = %d\n"، sbp::a)؛ printf(" \n::a = %d\n\n"، ::a)؛ بازگشت 0؛ )

ما گرفتیم:

استفاده از فضای نام sbp.

این یک دستورالعمل استفاده است که همه نام‌ها را در فضای نام sbp در دسترس قرار می‌دهد.

این با متغیر محلی a کار می کند. برای اختصاص مقادیر به متغیر a از فضای sbp، باید به صراحت به sbp اشاره کنید:

همین امر در مورد متغیر سراسری a صدق می کند.

متغیر محلی a متغیرهای سراسری با همین نام را می بندد.

اکنون یک مثال برای یک اعلان استفاده:

// @author Subbotin B.P..h" فضای نام sbp ( int a; int b; int c; ) int a; int _tmain(int argc, _TCHAR* argv) ( int a; a = 1؛ با استفاده از sbp::b; b = 2; ::a = 3; printf("\n a = %d\n"، a); printf("\n sbp::b = %d\n"، sbp::b)؛ printf("\ n::a = %d\n\n"، ::a)؛ بازگشت 0؛ )

ما گرفتیم:

این یک اعلان استفاده است. در اینجا متغیر b به صورت محلی از فضای نام sbp اعلام می شود. پس از این اطلاعیه می توانید اقدامات زیر را انجام دهید:

اما اعلان استفاده برای a

ما را به یک خطا هدایت می کند، زیرا در مثال، متغیر محلی a قبلاً تعریف شده است.

کمک خواهد کرد.
مسیر پشتیبانی از فضای نام در PHP مسیری دشوار بوده است. اما خوشبختانه در PHP 5.3 به این زبان اضافه شد و ساختار کدهای پی اچ پی از آن زمان به طور قابل توجهی بهبود یافته است. اما دقیقاً چگونه باید از آنها استفاده کنیم؟

فضاهای نام چیست؟

"وقتی نام فضای نام را به صورت رشته ای ذخیره می کنید، اسلش را فراموش نکنید!"

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

پیش از این، توسعه‌دهندگان مجبور بودند از پیشوندهای زیر خط در کلاس‌ها، توابع و ثابت‌ها برای جداسازی کدها استفاده کنند. این معادل این است که هر کسی به وسایل خود برچسب زده و آنها را در یک جعبه بزرگ ذخیره کند. البته این حداقل نوعی سازماندهی است، اما بسیار بی اثر است.

فضای نام، کمک! شما می توانید همان تابع، کلاس، رابط را اعلام کنید و ثابت را در فضای نام جداگانه بدون دریافت خطاهای مرگبار تعریف کنید. در هسته خود، فضاهای نام چیزی بیش از بلوک های کد دارای برچسب سلسله مراتبی حاوی کد PHP معمولی نیستند.

شما از آنها استفاده می کنید!

درک این نکته مهم است که شما از فضای نام به طور غیر مستقیم استفاده می کنید. از PHP 5.3، تمام تعاریفی که قبلاً در فضاهای نام تعریف شده توسط کاربر تعریف نشده اند، تحت فضای نام جهانی قرار می گیرند.

فضای نام جهانی همچنین تمام تعاریف داخلی PHP مانند mysqli_connect() و کلاس Exception را ذخیره می کند. از آنجایی که فضای نام جهانی یک نام شناسایی منحصر به فرد ندارد، معمولاً به عنوان فضای نام جهانی شناخته می شود.

لطفاً توجه داشته باشید که استفاده از فضای نام اختیاری است.
اسکریپت PHP شما بدون آنها به خوبی کار خواهد کرد و این رفتار خیلی زود تغییر نخواهد کرد.

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

فایل حاوی فضای نام باید قبل از هر کد دیگری حاوی اعلان خود در ابتدا باشد. تنها چیزی که می‌توان قبل از یک فضای نام اعلام کرد، کلمه رزرو شده declare است، عبارت declare می‌تواند قبل از اعلان فضای نام ظاهر شود تا رمزگذاری فایل را نشان دهد.

فضاهای نام با استفاده از کلمه رزرو شده فضای نام اعلان می شوند. فضاهای نام از قوانینی مشابه سایر شناسه ها در PHP پیروی می کنند. بنابراین فضای نام باید با یک حرف یا زیرخط و به دنبال آن تعداد حروف، اعداد یا زیرخط شروع کنید.

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

می توانید از چند فضای نام در یک فایل استفاده کنید.

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

فضاهای نام برای جلوگیری از تعاریف متناقض و ایجاد انعطاف پذیری و سازماندهی بیشتر در کد برنامه استفاده می شود.

لطفا توجه داشته باشید که بریس های مجعد کاملا اختیاری هستند. در واقع، استفاده از یک فضای نام برای هر فایل و حذف پرانتزهای فرفری کد شما را بسیار تمیزتر می کند - نیازی به تورفتگی کد تو در تو نیست.

فضاهای نام فرعی

فضاهای نام می توانند از سلسله مراتب خاصی پیروی کنند، درست مانند دایرکتوری ها در یک سیستم فایل در رایانه. فضاهای نام فرعی برای سازماندهی ساختار پروژه بسیار مفید هستند. به عنوان مثال، اگر پروژه شما نیاز به دسترسی به پایگاه داده دارد، می توانید کنترل کننده استثنای پایگاه داده و کد کنترل کننده اتصال را در فضای فرعی فضای نام پایگاه داده قرار دهید.

برای انعطاف پذیری، عاقلانه است که فضاهای نام تودرتو در زیر شاخه ها ذخیره شوند. این به ساختار پروژه کمک می کند و استفاده از آن را برای بارگذارهای خودکار که از استاندارد PSR-4 پیروی می کنند بسیار آسان تر می کند.

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

نکته جالب: در RFC برای اینکه تصمیم بگیریم از کدام جداکننده فضای نام استفاده کنیم، گزینه استفاده از شکلک در نظر گرفته شد.

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

تعریف فضای نام فرعی با بلوک های کد تو در تو پشتیبانی نمی شود. مثال زیر یک خطای مهلک را برمی‌گرداند: "اعلان‌های فضای نام نمی‌توانند تودرتو شوند."

فراخوانی کد از فضای نام

اگر می‌خواهید یک نمونه جدید از یک شی ایجاد کنید، یک تابع را فراخوانی کنید یا از ثابت‌هایی از فضاهای نام مختلف استفاده کنید، از بک اسلش استفاده می‌کنید. سه نوع تعریف نام فضای نام وجود دارد:
  • نام بدون صلاحیت
  • نام واجد شرایط
  • نام کاملا واجد شرایط

نام ناقص

این نام یک کلاس، تابع یا ثابت است و ارجاعی به هیچ فضای نامی را شامل نمی شود. برای کسانی که تازه شروع به کار با فضاهای نام می کنند، این یک دیدگاه رایج است.

نام و نام خانوادگی

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

مثال زیر یک خطای مهلک را نشان می دهد: "خطای مرگبار: کلاس "MyProject\Database\MyProject\FileAccess\Input" یافت نشد" زیرا MyProject\FileAccess\Input به فضای نامی که شما در آن هستید مربوط نیست.

اسم مطلق

نام های کامل و جزئی در رابطه با فضای نامی که در حال حاضر در آن هستید استفاده می شود. آنها را می توان فقط برای تعریف دسترسی در آن سطح یا فرو رفتن عمیق تر در سلسله مراتب فضای نام استفاده کرد.

اگر می خواهید به یک تابع، کلاس یا ثابت که در سطح بالاتری از سلسله مراتب است دسترسی داشته باشید، باید از نام کامل استفاده کنید - یک مسیر مطلق، نه یک مسیر نسبی. تماس باید با بک اسلش شروع شود. این به PHP اجازه می دهد بداند که این تماس باید از فضای جهانی انجام شود، نه اینکه به آن نسبت به مکان فعلی شما دسترسی داشته باشد.

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

با دانستن این موضوع، اکنون می‌توانیم توابع داخلی PHP را بیش از حد بارگذاری کنیم در حالی که هنوز می‌توانیم تابع اصلی (یا ثابت) را فراخوانی کنیم.

"; }

تماس های پویا

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

کلمه کلیدی فضای نام

کلمه کلیدی namespace نه تنها برای تعریف فضای نام استفاده می‌شود، بلکه می‌تواند برای برقراری تماس با فضای نام فعلی، از نظر عملکردی مشابه کلمه کلیدی self برای کلاس‌ها، استفاده شود.

__NAMESPACE__ ثابت

همانطور که از کلمه کلیدی self نمی توان برای تعریف نام کلاس فعلی استفاده کرد، کلمه کلیدی namespace نیز نمی تواند برای فضای نام فعلی استفاده شود. بنابراین از ثابت __NAMESPACE__ استفاده می کنیم

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

یک نام مستعار وارد کنید یا ایجاد کنید

نیازی به استفاده در فضاهای نام نیست

یکی از ویژگی های مهم فضاهای نام در PHP امکان ارجاع به نام مطلق خارجی توسط نام مستعار، یا واردات.

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

به عنوان استفاده کنید

نحوه استفاده از آن

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

یک جایگزین این است که نام مستعار را با نام دیگری اختصاص دهید

همچنین می توانید کلاس های جهانی مانند Exception را وارد کنید. هنگام وارد کردن، لازم نیست نام مطلق آن را بنویسید.

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

اگرچه پشتیبانی از فراخوانی فضای نام پویا وجود دارد، واردات پویا پشتیبانی نمی شود.

نتیجه

فضاهای نام برای جلوگیری از تضاد تعریف و ایجاد انعطاف پذیری و سازماندهی بیشتر در کد برنامه استفاده می شود. به یاد داشته باشید که شما نیازی به استفاده از فضای نام ندارید. این ویژگی در ترکیب با رویکرد شی گرا استفاده می شود. امیدوارم با استفاده از فضاهای نام، پروژه (آینده) PHP خود را به سطح بعدی ارتقا دهید.

حاشیه نویسی: این بخش استفاده و اعلان فضاهای نام را توضیح می دهد. ویژگی های اصلی RDF، XML-Data، توضیحات محتوای سند (DCD)، طرح واره برای XML شی گرا (SOX)، زبان نشانه گذاری تعریف سند (DDML، که قبلا به عنوان XSchema شناخته می شد) ارائه شده است.

ما قبلاً برخی از معایب تعاریف DTD را شرح دادیم، آنها مرتبط هستند:

  1. نحو این تعاریف با نحو XML متفاوت است (به طور خاص، به اصطلاح توسعه یافته فرم Backus-Naur, Extended Backus Naur Form);
  2. این تعاریف به اندازه کافی گویا نیستند.
  3. از آنجایی که هر کاربر می‌تواند تگ‌های خود را ایجاد کند، این احتمال وجود دارد که افراد از همان نام عناصر برای اشاره به چیزهای مختلف استفاده کنند. حتی اگر معانی عناصر یکسان باشد، محتوای احتمالی آنها ممکن است بسته به تعریف متفاوت باشد. بنابراین ما به راهی برای تعریف کاربردهای خاص یک عنصر نیاز داریم، به خصوص اگر انواع مختلف واژگان را در یک سند ترکیب کنیم. برای حل این مشکل، W3C مشخصاتی به نام XML Namespaces را منتشر کرد که به شما امکان می دهد زمینه یک عنصر را در یک فضای نام تعریف کنید.
  4. شرایطی وجود دارد که لازم است اسناد XML از منابع مختلف مطابق با تعاریف مختلف DTD ترکیب شوند. به عنوان مثال، اگر DTD های منفرد برای پوشش کل حجم کافی نباشند یا درک آنها دشوار باشد، هنگام توصیف حجم زیادی از اطلاعات، این وضعیت به وجود می آید. هنگامی که سعی می کنید داده های شریک تجاری خود را با داده های شما ترکیب کنید، در سیستم های تجارت الکترونیک نیز رخ می دهد. همچنین ممکن است شرایطی پیش بیاید که شما به سادگی نیاز دارید تنظیمات خود را به یک DTD موجود اضافه کنید تا برخی اطلاعات را در قالب استاندارد مبادله کنید. متأسفانه، توصیه XML راهی برای ترکیب چند DTD در یک سند واحد بدون تغییر آنها یا ایجاد یک DTD جدید (با استفاده از مراجع خارجی) ارائه نمی دهد.

این فصل دو مفهوم زیر را پوشش می دهد - فضای نامو طرحواره های XML فضاهای نام به توسعه دهندگان XML اجازه می دهد تا یک مشکل پیچیده را به قطعات کوچک تقسیم کنند و چندین واژگان را در یک سند واحد ترکیب کنند تا به طور کامل آن را توصیف کنند. طراحان فرهنگ لغت با استفاده از طرحواره ها تعاریف دقیق تری نسبت به DTD ها ایجاد می کنند و این کار را با استفاده از نحو XML انجام می دهند.

این دو ابزار به حل مشکلات پیچیده ای که هنگام استفاده از XML ایجاد می شود کمک می کند. فضاهای نام و طرحواره ها به طراحان و برنامه نویسان XML اجازه می دهند:

  • سازماندهی بهتر واژگان برای حل مسائل پیچیده؛
  • نگاه داشتن تایپ قویداده ها در طول تبدیل به و از XML.
  • واژگان را دقیق تر و انعطاف پذیرتر از آنچه با DTD ممکن بود، توصیف کنید.
  • قوانین فرهنگ لغت را در XML بخوانید و به تعاریف آن دسترسی داشته باشید بدون اینکه تجزیه کننده را پیچیده کنید.

اختلاط فرهنگ لغت

هنگام طراحی یک فرهنگ لغت، ممکن است منطقی باشد که مشکل جهانی را به چندین بخش تقسیم کنیم. این نیاز به راه‌هایی برای تقسیم‌بندی یک مشکل بزرگ به واژگان متعدد دارد. با این حال، مشکل واقعی که باید حل شود، ادغام DTD های جداگانه در بدنه یک سند واحد است. این مشکل همچنین می تواند به وجود بیاید، به عنوان مثال، شما برای شرکتی کار می کنید که به احتمال زیاد در آن مجموعه ای از تعاریف DTD وجود دارد و استفاده از آنها می تواند کار را تا حد زیادی تسهیل کند، زیرا آنها مشکل را همانطور که دیگران درک می کنند توصیف می کنند. اغلب استفاده مجدد از تعاریف DTD نیز مفید است. استفاده از ساختارهای رایج از تعاریف DTD که قبلا ایجاد شده است. اگر در حال توسعه اپلیکیشنی هستید که نیاز به برقراری ارتباط با نرم افزار یک شریک خارجی دارد، چاره ای جز استفاده مجدد از مفاهیم موجود ندارید. تعاریف موجود از DTD یک زبان مشترک را تشکیل می دهد که برای فهمیدن باید صحبت شود. اگر مفهومی از قبل وجود داشته باشد، باید تلاش کرد تا از نظر آن مفهوم درک شود.

وقتی از تعاریفی استفاده می‌کنید که از DTD‌های توسعه‌دهندگان دیگر برای شما مفید است، یا زمانی که DTD‌های تقسیم‌بندی شده را برای ایجاد سندی که یک مشکل پیچیده را توصیف می‌کند ترکیب می‌کنید، اگر اسناد شما از عناصری با نام‌های یکسان استفاده می‌کنند، در خطر مواجه شدن با مشکل قرار می‌گیرید. از ابهام و تصادم نام.

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

فضاهای نام

فضاهای نام می توانند از دو طریق بسیار مهم به کاربر کمک کنند. با کمک آنها می توانید:

  • ترکیب اسناد از دو یا چند منبع بدون از دست دادن اطمینان از اینکه برنامه تشخیص می دهد که یک عنصر یا ویژگی از کدام منبع گرفته شده است.
  • در صورت امکان، به عامل کاربر اجازه دسترسی به مطالب بیشتر، مانند تعریف نوع سند (DTD) یا سایر توضیحات عناصر و ویژگی‌ها را بدهید.

فضای نام مجموعه ای از مقادیر یا ویژگی های خاص است که می تواند در اسناد XML به عنوان نام عناصر یا ویژگی ها استفاده شود. فضاهای نام در XML توسط یک شناسه منبع یکنواخت (URI) تعریف می شوند (شما می توانید از آدرس DTD در سرور خود به عنوان URI استفاده کنید). این اجازه می دهد تا هر فضای نام منحصر به فرد باشد.

بنابراین، برای استفاده موثر از فضاهای نام در سندی که عناصر را از منابع مختلف ترکیب می کند، باید تعریف کنیم:

  • ارجاع به یک URI که استفاده از عنصر را توصیف می کند.
  • نام مستعاری که به ما امکان می دهد بفهمیم عنصر ما از کدام فضای نام می آید. این نام مستعار به شکل یک پیشوند عنصر است (به عنوان مثال، اگر نام مستعار عنصر Book مبهم کاتالوگ باشد، آن عنصر نامیده می شود. ).

استفاده و اعلان فضاهای نام

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

از آنجایی که در زبان های مختلف نشانه گذاری - پیاده سازی های XML - نام های یکسان برچسب ها و ویژگی های آنها را می توان یافت که معانی کاملاً متفاوتی دارند، لازم است بتوان به نوعی بین آنها تمایز قائل شد. برای این کار به نام تگ ها و ویژگی ها یک پیشوند کوتاه داده می شود که با علامت دو نقطه از نام جدا می شود. پیشوند نام با یک شناسه مرتبط است که فضای نام را تعریف می کند. همه نام‌های برچسب و ویژگی که پیشوندهای آنها با یک شناسه مرتبط است، یک فضای نام واحد را تشکیل می‌دهند که در آن نام‌ها باید منحصربه‌فرد باشند.

از آنجایی که می‌خواهیم همه بتوانند وقتی یک اعلان فضای نام را می‌بینیم، آن را تشخیص دهند، یک کلمه خاص برای آن رزرو می‌کنیم. طبق توصیه فضاهای نام، کلمه xmlns است. مقدار مشخصه یک URI است که فضای نام مورد استفاده را مشخص می کند. این اغلب URL تعریف DTD است، اما همیشه نباید اینطور باشد. پیشوند و شناسه فضای نام با ویژگی xmlns به صورت زیر تعریف می شوند:

همانطور که می بینید، پیشوند ntb به تازگی تعریف شده است، اما می توان از آن در نام ntb: notebook استفاده کرد. در آینده، نام تگ ها و ویژگی هایی که می خواهیم به فضای نام http://some.firm.com/2003/ntbml اختصاص دهیم با ntb پیشوند می شوند، به عنوان مثال:

گورلوو

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

عنصر کتاب از فضای نام کاتالوگ می آید و ویژگی ISBN از ترتیب می آید.

برای مثال نام همراه با یک پیشوند

به نام توسعه یافته، واجد شرایط یا واجد شرایط (OName. Qualified Name). به بخشی از نام که بعد از دو نقطه نوشته می شود، قسمت محلی نام می گویند.

نامگذاری نام منابع وب می تواند گیج کننده باشد. منبع یاب یکنواخت ( منبع یاب یکنواخت، URL) یک منبع را از نظر پروتکل دسترسی و موقعیت شبکه نشان می دهد. تعیین کننده هویت منابع یکشکل ( شناسه منبع یکنواخت، URI) یک نام منحصر به فرد برای برخی از منابع است. به یک URI به سادگی به عنوان یک رشته منحصر به فرد از کاراکترها نگاه کنید که یک فضای نام را مشخص می کند.

طبق قوانین SGML و XML، یک دونقطه را می توان در نام ها به عنوان یک کاراکتر معمولی استفاده کرد، بنابراین یک نام با پیشوند فقط یک ترفند است؛ هر برنامه ای که فضای نام را "نشناسد"، سند را تجزیه می کند، رفتار می کند. نام واجد شرایط به عنوان یک نام معمولی. به طور خاص چنین نتیجه می شود که در اظهارنامه نوع سندپیشوندهای نام (اعلام نوع سند) را نمی توان حذف کرد.

ویژگی xmlns می تواند در هر عنصر XML ظاهر شود، نه فقط عنصر ریشه. پیشوندی که تعریف می کند را می توان در عنصری که ویژگی xmlns در آن نوشته شده است و در همه عناصر تو در تو استفاده کرد. علاوه بر این، چندین فضای نام را می توان در یک عنصر تعریف کرد.

در عناصر تو در تو، فضای نام را می توان با مرتبط کردن پیشوند با یک شناسه متفاوت، نادیده گرفت.

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

یک سند با طراحی خوب باید از فضای نام برای همه عناصر خود استفاده کند.

پیشوندهایی که با کاراکترهای xml شروع می شوند در هر صورت برای خود زبان XML محفوظ هستند. پیشوند xmlns برای مرتبط کردن یک پیشوند دیگر تعریف شده با شناسه فضای نام آن استفاده می شود. پیشوند xmlns نیازی به تعریف ندارد، این پیشوند با توصیه "Namespaces in XML" معرفی شده و در آنجا با شناسه فضای نام مرتبط است. http://www.w3.ori/2000 /xmlns/.

پیشوند دیگری، xml، در همان توصیه با شناسه مرتبط است http://www.w3.org/XML/1998/namespace. همچنین نیازی به تعریف در سند XML نیست. هیچ پیشوند دیگری را نمی توان با این شناسه ها مرتبط کرد. دستورات حفظ حروف فضای خالی دست نخورده را حفظ کنید. این برای برخی متون، مانند کدهای برنامه، مهم است. مقدار پیش‌فرض، فضای خالی را به اختیار کنترل‌کننده می‌گذارد.

محدوده

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

با این حال، ما همچنین باید دامنه‌های فضای نام را روی عناصری ترکیب کنیم که در غیر این صورت فضاهای نام دیگری را به ارث می‌برند. در این راستا دو روش برای اعلام دامنه تعریف شده است: پیش فرض و واجد شرایط.

محدوده پیش فرض

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

برای اینکه فضای نامی به عنوان فضای نام پیش‌فرض برای یک scope تبدیل شود، به سادگی اعلام پیشوند را حذف کنید.

اگر یک پیشوند اعلام شود و سپس همراه با یک نام استفاده شود، فضای نام به صراحت مشخص شده است. برای تخصیص یک نام غیر واجد شرایط به یک فضای نام، باید یک فضای پیش فرض که شامل نام نامشخص (بدون پیشوند) باشد، اعلام کنید.

محدوده واجد شرایط

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



 


خواندن:



زبان برنامه نویسی تایپ شده مشخص کننده های نوع یا قالب یا کاراکترهای تبدیل یا کاراکترهای کنترلی

زبان برنامه نویسی تایپ شده مشخص کننده های نوع یا قالب یا کاراکترهای تبدیل یا کاراکترهای کنترلی

زبان برنامه نویسی C++ آخرین به روز رسانی: 2017/08/28 زبان برنامه نویسی C++ یک زبان کامپایل شده سطح بالا است...

برنامه کاری پست روسیه در تعطیلات سال نو کار پستی در تعطیلات سال نو

برنامه کاری پست روسیه در تعطیلات سال نو کار پستی در تعطیلات سال نو

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

Tass: رمزگشایی مخفف

Tass: رمزگشایی مخفف

این اصطلاح از اختصار ایتالیایی و brevis لاتین - کوتاه آمده است. در کتب و نسخه های خطی باستانی این نام مخفف ...

قالب های گواهی خالی دانلود قالب گواهی افتخار برای چاپ

قالب های گواهی خالی دانلود قالب گواهی افتخار برای چاپ

با سلام، خواننده عزیز! امروز به شما خواهم گفت که چگونه در Word یک نامه بسازید. در کارم مجبور شدم تعداد زیادی از...

فید-تصویر RSS