بخش های سایت
انتخاب سردبیر:
- شبکه های انتقال داده در سیستم های کنترل صنعتی فرآیند نظرسنجی غیرمتمرکز یک زیر سیستم
- روش های شناسایی پارامتریک اشیاء کنترلی
- حفاظت رله ای سیستم های قدرت الکتریکی
- کلاس ها و فضاهای نام با استفاده و اعلان فضاهای نام
- وبلاگ نویس بلاروسی چطور هستید؟ وبلاگ نویسان مد بلاروسی می گویند. درباره پستهای «تند» و نگرش خوانندگان نسبت به آنها
- جزوه با موضوع "کامپیوتر و کودکان" وضعیت صحیح دست
- اسنوبورد: چگونه همه چیز شروع شد؟
- عکس محل قرارگیری آن در نقشه جهان، توضیحات
- دانلود بلیط قطار مسافری راه آهن روسیه برای اندروید v
- نحوه استفاده از حساب شخصی و بررسی حساب خود در Intertelecom Assa
تبلیغات
کلاس ها و فضاهای نام. کلاس ها و فضاهای نام با استفاده و اعلان فضاهای نام |
کلاس ها و فضاهای نام کلاس های 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 ریشه تعداد مناسبی از فضاهای نام تودرتو (مانند 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 به شما امکان می دهد از نام های فضای نام std استفاده کنید. std نام کتابخانه استاندارد C++ است. اگر در آخرین مثال، رشته اتصال فضای نام را با استفاده از namespace std حذف کنیم، باید نام فضای نام را به صراحت مشخص کنیم: // @author Subbotin B.P..h" #include فضای نام محدوده را مشخص می کند. مثال ها به صراحت فضاهای نام را تعریف کردند. در اینجا نمونه های دیگری از فضاهای نام وجود دارد. محدوده درون یک تابع نیز یک فضای نام است. دامنه متغیرهای سراسری نیز یک فضای نام است. یک کلاس نیز یک فضای نام است. ایجاد فضای نام بدون نام امکان پذیر است. مثال: // @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 مهم است که تفاوت بین استفاده از اعلامیه ها و استفاده از دستورالعمل ها را مشاهده کنید. یک دستورالعمل استفاده همه نامها را در یک فضای نام مشخص در دسترس قرار میدهد، اما آنها را به صورت محلی اعلام نمیکند. اعلان استفاده بر دستورالعمل استفاده ارجحیت دارد. بیایید به یک مثال نگاه کنیم: // @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 مانند mysqli_connect() و کلاس Exception را ذخیره می کند. از آنجایی که فضای نام جهانی یک نام شناسایی منحصر به فرد ندارد، معمولاً به عنوان فضای نام جهانی شناخته می شود. فضاهای نام با استفاده از کلمه رزرو شده فضای نام اعلان می شوند. فضاهای نام از قوانینی مشابه سایر شناسه ها در PHP پیروی می کنند. بنابراین فضای نام باید با یک حرف یا زیرخط و به دنبال آن تعداد حروف، اعداد یا زیرخط شروع کنید. اگر می خواهید یک بلوک کد را در یک فضای جهانی تعریف کنید، می توانید از کلمه کلیدی فضای نام بدون اضافه کردن نام استفاده کنید. می توانید از چند فضای نام در یک فایل استفاده کنید. همچنین می توانید از فضای نام یکسان برای چندین فایل مختلف استفاده کنید. فرآیند اتصال فایل به طور خودکار آنها را ادغام می کند. تمرین کدنویسی خوب است که تعداد تعاریف فضای نام را به یک فایل محدود کنید، درست همانطور که ممکن است با کلاس ها انجام دهید. برای انعطاف پذیری، عاقلانه است که فضاهای نام تودرتو در زیر شاخه ها ذخیره شوند. این به ساختار پروژه کمک می کند و استفاده از آن را برای بارگذارهای خودکار که از استاندارد PSR-4 پیروی می کنند بسیار آسان تر می کند. PHP از بک اسلش به عنوان جداکننده فضای نام استفاده می کند. نکته جالب: در RFC برای اینکه تصمیم بگیریم از کدام جداکننده فضای نام استفاده کنیم، گزینه استفاده از شکلک در نظر گرفته شد. // myproject/database/connection.phpشما می توانید به تعداد دلخواه از فضای نام تو در تو استفاده کنید. تعریف فضای نام فرعی با بلوک های کد تو در تو پشتیبانی نمی شود. مثال زیر یک خطای مهلک را برمیگرداند: "اعلانهای فضای نام نمیتوانند تودرتو شوند." مثال زیر یک خطای مهلک را نشان می دهد: "خطای مرگبار: کلاس "MyProject\Database\MyProject\FileAccess\Input" یافت نشد" زیرا MyProject\FileAccess\Input به فضای نامی که شما در آن هستید مربوط نیست. اگر می خواهید به یک تابع، کلاس یا ثابت که در سطح بالاتری از سلسله مراتب است دسترسی داشته باشید، باید از نام کامل استفاده کنید - یک مسیر مطلق، نه یک مسیر نسبی. تماس باید با بک اسلش شروع شود. این به PHP اجازه می دهد بداند که این تماس باید از فضای جهانی انجام شود، نه اینکه به آن نسبت به مکان فعلی شما دسترسی داشته باشد. ما مجبور نیستیم از نام کامل برای توابع داخلی PHP استفاده کنیم. نامهای نامشخص برای توابع و ثابتها اگر در فضای نام فعلی تعریف نشده باشند، در فضای نام جهانی تعریف میشوند. با دانستن این موضوع، اکنون میتوانیم توابع داخلی PHP را بیش از حد بارگذاری کنیم در حالی که هنوز میتوانیم تابع اصلی (یا ثابت) را فراخوانی کنیم. ";
}
این ثابت در هنگام شروع به یادگیری فضای نام بسیار مفید است. همچنین برای رفع اشکال بسیار مفید است. از آنجایی که یک رشته است، می توان آن را همراه با فراخوانی کد پویا که در بالا مورد بحث قرار گرفت استفاده کرد. واردات یک جنبه بسیار مفید و اساسی از فضاهای نام است. این به شما امکان می دهد از بسته های خارجی مانند کتابخانه ها بدون نگرانی در مورد تداخل نام استفاده کنید. واردات با استفاده از کلمه کلیدی use انجام می شود. در صورت تمایل، می توانید یک نام مستعار سفارشی را با استفاده از کلمه کلیدی as تعیین کنید. به عنوان استفاده کنید یک جایگزین این است که نام مستعار را با نام دیگری اختصاص دهید همچنین می توانید کلاس های جهانی مانند Exception را وارد کنید. هنگام وارد کردن، لازم نیست نام مطلق آن را بنویسید. توجه داشته باشید که برای نامها در یک فضای نام، بک اسلش پیشرو ضروری نیست و وجود آن در آنجا توصیه نمیشود، زیرا نامهای وارد شده باید مطلق باشند و نسبت به فضای نام فعلی تجزیه نشده باشند. اگرچه پشتیبانی از فراخوانی فضای نام پویا وجود دارد، واردات پویا پشتیبانی نمی شود. حاشیه نویسی: این بخش استفاده و اعلان فضاهای نام را توضیح می دهد. ویژگی های اصلی RDF، XML-Data، توضیحات محتوای سند (DCD)، طرح واره برای XML شی گرا (SOX)، زبان نشانه گذاری تعریف سند (DDML، که قبلا به عنوان XSchema شناخته می شد) ارائه شده است. ما قبلاً برخی از معایب تعاریف DTD را شرح دادیم، آنها مرتبط هستند: این فصل دو مفهوم زیر را پوشش می دهد - فضای نامو طرحواره های XML فضاهای نام به توسعه دهندگان XML اجازه می دهد تا یک مشکل پیچیده را به قطعات کوچک تقسیم کنند و چندین واژگان را در یک سند واحد ترکیب کنند تا به طور کامل آن را توصیف کنند. طراحان فرهنگ لغت با استفاده از طرحواره ها تعاریف دقیق تری نسبت به DTD ها ایجاد می کنند و این کار را با استفاده از نحو XML انجام می دهند. این دو ابزار به حل مشکلات پیچیده ای که هنگام استفاده از XML ایجاد می شود کمک می کند. فضاهای نام و طرحواره ها به طراحان و برنامه نویسان XML اجازه می دهند: هنگام طراحی یک فرهنگ لغت، ممکن است منطقی باشد که مشکل جهانی را به چندین بخش تقسیم کنیم. این نیاز به راههایی برای تقسیمبندی یک مشکل بزرگ به واژگان متعدد دارد. با این حال، مشکل واقعی که باید حل شود، ادغام DTD های جداگانه در بدنه یک سند واحد است. این مشکل همچنین می تواند به وجود بیاید، به عنوان مثال، شما برای شرکتی کار می کنید که به احتمال زیاد در آن مجموعه ای از تعاریف DTD وجود دارد و استفاده از آنها می تواند کار را تا حد زیادی تسهیل کند، زیرا آنها مشکل را همانطور که دیگران درک می کنند توصیف می کنند. اغلب استفاده مجدد از تعاریف DTD نیز مفید است. استفاده از ساختارهای رایج از تعاریف DTD که قبلا ایجاد شده است. اگر در حال توسعه اپلیکیشنی هستید که نیاز به برقراری ارتباط با نرم افزار یک شریک خارجی دارد، چاره ای جز استفاده مجدد از مفاهیم موجود ندارید. تعاریف موجود از DTD یک زبان مشترک را تشکیل می دهد که برای فهمیدن باید صحبت شود. اگر مفهومی از قبل وجود داشته باشد، باید تلاش کرد تا از نظر آن مفهوم درک شود. وقتی از تعاریفی استفاده میکنید که از DTDهای توسعهدهندگان دیگر برای شما مفید است، یا زمانی که DTDهای تقسیمبندی شده را برای ایجاد سندی که یک مشکل پیچیده را توصیف میکند ترکیب میکنید، اگر اسناد شما از عناصری با نامهای یکسان استفاده میکنند، در خطر مواجه شدن با مشکل قرار میگیرید. از ابهام و تصادم نام. این مشکل در هنگام استفاده از نمونه های نام از چندین DTD تشدید می شود. در این صورت ما نمی دانیم که به کدام عنصر، کدام تعریف DTD اشاره دارد، این مشکل اسناد خوش فرم، ابهام نامیده می شود. علاوه بر این، در صورت نیاز به اسامی از سند بررسی های اعتبار، می توانیم برنامه خود را بسیار گیج کننده کنیم. به این مشکل برخورد نام می گویند. فضاهای نام می توانند از دو طریق بسیار مهم به کاربر کمک کنند. با کمک آنها می توانید: فضای نام مجموعه ای از مقادیر یا ویژگی های خاص است که می تواند در اسناد XML به عنوان نام عناصر یا ویژگی ها استفاده شود. فضاهای نام در XML توسط یک شناسه منبع یکنواخت (URI) تعریف می شوند (شما می توانید از آدرس DTD در سرور خود به عنوان URI استفاده کنید). این اجازه می دهد تا هر فضای نام منحصر به فرد باشد. بنابراین، برای استفاده موثر از فضاهای نام در سندی که عناصر را از منابع مختلف ترکیب می کند، باید تعریف کنیم: از آنجایی که در زبان های مختلف نشانه گذاری - پیاده سازی های 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 تبدیل شود، به سادگی اعلام پیشوند را حذف کنید. اگر یک پیشوند اعلام شود و سپس همراه با یک نام استفاده شود، فضای نام به صراحت مشخص شده است. برای تخصیص یک نام غیر واجد شرایط به یک فضای نام، باید یک فضای پیش فرض که شامل نام نامشخص (بدون پیشوند) باشد، اعلام کنید. اگر بتوانید فضاهای نام خود را به وضوح از هم جدا کنید، روش فوق به خوبی کار می کند. اما گاهی اوقات لازم است که نام های فردی از فضای نام خارجی در یک سند گنجانده شود. به جای اعلام فضاهای نام برای کل محدوده، می توانید از نام های واجد شرایط استفاده کنید. فضاهای نام مورد نیاز خود را در ابتدای سند اعلام کنید و سپس آنها را در محل استفاده مشخص کنید. |
خواندن: |
---|
محبوب:
دانلود قالب های گواهی خالی |
جدید
- روش های شناسایی پارامتریک اشیاء کنترلی
- حفاظت رله ای سیستم های قدرت الکتریکی
- کلاس ها و فضاهای نام با استفاده و اعلان فضاهای نام
- وبلاگ نویس بلاروسی چطور هستید؟ وبلاگ نویسان مد بلاروسی می گویند. درباره پستهای «تند» و نگرش خوانندگان نسبت به آنها
- جزوه با موضوع "کامپیوتر و کودکان" وضعیت صحیح دست
- اسنوبورد: چگونه همه چیز شروع شد؟
- عکس محل قرارگیری آن در نقشه جهان، توضیحات
- دانلود بلیط قطار مسافری راه آهن روسیه برای اندروید v
- نحوه استفاده از حساب شخصی و بررسی حساب خود در Intertelecom Assa
- نام های جالب برای گوشا در Odnoklassniki