c இல் பெயர்வெளி என்றால் என்ன. வகுப்புகள் மற்றும் பெயர்வெளிகள். பெயர்வெளியில் இருந்து அழைப்புக் குறியீடு

வகுப்புகள் மற்றும் பெயர்வெளிகள்

.NET கட்டமைப்பு வகுப்புகள்

நிர்வகிக்கப்பட்ட குறியீட்டை எழுதுவதன் மிகப்பெரிய நன்மை - குறைந்தபட்சம் ஒரு டெவலப்பர் பார்வையில் - நீங்கள் பயன்படுத்த வேண்டும் .NET அடிப்படை வகுப்பு நூலகம் .

.NET கோர் வகுப்புகள், Windows API ஐப் பயன்படுத்தி முன்னர் தீர்க்கப்படக்கூடிய எந்தவொரு சிக்கலையும் தீர்க்க உங்களை அனுமதிக்கும் நிர்வகிக்கப்பட்ட குறியீடு வகுப்புகளின் ஒரு பெரிய தொகுப்பை வழங்குகிறது. இந்த வகுப்புகள் அனைத்தும் ஒரே மரபுரிமையுடன் ஒரே IL பொருள் மாதிரியைப் பின்பற்றுகின்றன. இதன் பொருள் நீங்கள் .NET அடிப்படை வகுப்புகளில் இருந்து பொருட்களை உருவாக்கலாம் அல்லது அவற்றிலிருந்து உங்கள் சொந்த வகுப்புகளைப் பெறலாம்.

.NET அடிப்படை வகுப்புகளை வேறுபடுத்துவது என்னவென்றால், அவை உள்ளுணர்வு மற்றும் பயன்படுத்த எளிதானதாக வடிவமைக்கப்பட்டுள்ளன. எடுத்துக்காட்டாக, ஒரு நூலைத் தொடங்க, நீங்கள் வகுப்பின் தொடக்க () முறையை அழைக்க வேண்டும் நூல். TextBox ஆப்ஜெக்ட்டை கிடைக்காமல் செய்ய, ஆப்ஜெக்ட்டின் இயக்கப்பட்ட சொத்தை தவறு என அமைக்கவும். விசுவல் பேசிக் மற்றும் ஜாவா டெவலப்பர்களுக்கு நன்கு தெரிந்த இந்த அணுகுமுறை, நூலகங்களைப் பயன்படுத்த எளிதானது, GetDIBits(), RegisterWndClassEx(), மற்றும் IsEqualIID() போன்ற API செயல்பாடுகளுடன் பல ஆண்டுகளாக போராடி வரும் C++ டெவலப்பர்களுக்கு பெரும் நிவாரணமாக இருக்கும். அத்துடன் பல செயல்பாடுகளை கடந்து செல்லும் சாளர கைப்பிடிகள் தேவைப்படும்.

இருப்பினும், சி++ டெவலப்பர்கள் எப்பொழுதும் விண்டோஸ் ஏபிஐகளின் முழு தொகுப்பையும் எளிதாக அணுகுவார்கள், அதே சமயம் விஷுவல் பேசிக் 6 மற்றும் ஜாவா டெவலப்பர்கள் தங்கள் மொழிகளில் இருந்து அணுகும் முக்கிய இயக்க முறைமை செயல்பாடுகளுக்கு மட்டுப்படுத்தப்பட்டுள்ளனர். .NET அடிப்படை வகுப்புகள் Windows API அம்சத் தொகுப்பின் ஒப்பீட்டளவில் முழுமையான கவரேஜுடன் விஷுவல் பேசிக் மற்றும் ஜாவா லைப்ரரிகளின் பயன்பாட்டின் எளிமையை ஒருங்கிணைக்கிறது. பல விண்டோஸ் அம்சங்களை அடிப்படை வகுப்புகள் மூலம் அணுக முடியாது, இந்த சந்தர்ப்பங்களில் நீங்கள் API செயல்பாடுகளை நாட வேண்டியிருக்கும், ஆனால் பொதுவாக இது மிகவும் கவர்ச்சியான செயல்பாடுகளுக்கு மட்டுமே பொருந்தும். அன்றாட பயன்பாட்டிற்கு, அடிப்படை வகுப்புகளின் தொகுப்பு பொதுவாக போதுமானதாக இருக்கும். ஆனால் நீங்கள் ஒரு API செயல்பாட்டை அழைக்க வேண்டும் என்றால், .NET என்று அழைக்கப்படுவதை வழங்குகிறது இயங்குதளம்-அழைப்பு பொறிமுறை, இது சரியான தரவு வகை மாற்றத்திற்கு உத்தரவாதம் அளிக்கிறது, எனவே C#, C++ அல்லது விஷுவல் பேசிக் 2010 இல் எந்த மொழியில் குறியீடு எழுதப்பட்டிருந்தாலும், C++ குறியீட்டிலிருந்து நேரடியாக இந்த செயல்பாடுகளை அழைப்பதை விட இந்த பணி கடினமாக இல்லை.

பெயர்வெளிகள்

பெயர்வெளிகள்.NET வகுப்புகளுக்கு இடையேயான முரண்பாடுகளை பெயரிடுவதைத் தவிர்க்கும் ஒரு வழியாகும். வாடிக்கையாளரைப் பிரதிநிதித்துவப்படுத்தும் ஒரு வகுப்பை நீங்கள் வரையறுத்து, அதை வாடிக்கையாளரென்று அழைக்கும் சூழ்நிலைகளைத் தடுக்கும் நோக்கத்தை அவை உருவாக்குகின்றன, பின்னர் வேறொருவர் அதையே செய்கிறார் (இது மிகவும் பொதுவான சூழ்நிலை).

பெயர்வெளி என்பது தரவு வகைகளின் குழுவைத் தவிர வேறில்லை, ஆனால் பெயர்வெளியில் உள்ள அனைத்து தரவு வகைகளின் பெயர்களும் தானாகவே பெயர்வெளி பெயருடன் முன்னொட்டப்படும். பெயர்வெளிகளை ஒன்றுக்கொன்று உள்ளமைக்கலாம். எடுத்துக்காட்டாக, பெரும்பாலான பொது நோக்கத்திற்கான .NET அடிப்படை வகுப்புகள் பெயர்வெளியில் காணப்படுகின்றன அமைப்பு. அடிப்படை வகுப்பு வரிசைஇந்த இடத்தை குறிக்கிறது, எனவே அதன் முழு பெயர் அமைப்பு.வரிசை.

.NET இயங்குதளத்திற்கு அனைத்து பெயர்களும் பெயர்வெளிக்குள் அறிவிக்கப்பட வேண்டும்; உதாரணமாக நீங்கள் உங்கள் வகுப்பை வைக்கலாம் என் வகுப்புபெயர்வெளிக்கு MyCompany. அப்போது இந்த வகுப்பின் முழுப் பெயர் இப்படி இருக்கும் MyCompany.MyClass.

ஒரு பெயர்வெளி வெளிப்படையாகக் குறிப்பிடப்படாவிட்டால், பெயரிடப்படாத உலகளாவிய பெயர்வெளியில் வகை சேர்க்கப்படும் என்பதை நினைவில் கொள்ளவும்.

பெரும்பாலான சூழ்நிலைகளில், மைக்ரோசாப்ட் குறைந்தபட்சம் இரண்டு உள்ளமை பெயர்வெளிகளைப் பயன்படுத்த பரிந்துரைக்கிறது: முதலாவது உங்கள் நிறுவனத்தின் பெயர், இரண்டாவது வகுப்பைச் சேர்ந்த தொழில்நுட்பம் அல்லது மென்பொருள் தொகுப்பின் பெயர், எனவே இது இதுபோன்றது: MyCompany.SomeNamespace .என் வகுப்பு. பெரும்பாலான சந்தர்ப்பங்களில், இந்த அணுகுமுறை உங்கள் பயன்பாட்டின் வகுப்புகளை மற்ற நிறுவனங்களின் டெவலப்பர்களால் எழுதப்பட்ட வகுப்புப் பெயர்களுடன் சாத்தியமான முரண்பாடுகளிலிருந்து பாதுகாக்கும்.

பின்வரும் அட்டவணையானது .NET இல் வழங்கப்படும் பெயர்வெளிகளில் சிலவற்றின் (ஆனால் நிச்சயமாக அனைத்துமே இல்லை) குறுகிய பட்டியலாகும், அவை செயல்பாட்டின் அடிப்படையில் குழுக்களாகப் பிரிக்கப்பட்டுள்ளன:

.NET கட்டமைப்பின் முக்கிய பெயர்வெளிகள்
.NET இல் பெயர்வெளி விளக்கம்
அமைப்பு பெயர்வெளியின் உள்ளே அமைப்புஉள் தரவு, கணிதம், சீரற்ற எண் உருவாக்கம், சுற்றுச்சூழல் மாறிகள் மற்றும் குப்பை சேகரிப்பு, அத்துடன் பொதுவாகப் பயன்படுத்தப்படும் விதிவிலக்குகள் மற்றும் பண்புக்கூறுகள் ஆகியவற்றைக் கையாள்வதற்கான பல பயனுள்ள வகைகளைக் கொண்டுள்ளது.
அமைப்பு.தொகுப்புகள்
அமைப்பு.தொகுப்புகள்.பொது
இந்த பெயர்வெளிகளில் பல கொள்கலன் வகைகளும், சிறப்பு சேகரிப்புகளை உருவாக்க உங்களை அனுமதிக்கும் பல அடிப்படை வகைகள் மற்றும் இடைமுகங்களும் உள்ளன.
அமைப்பு.தரவு
சிஸ்டம்.டேட்டா.பொது
System.Data.EntityClient
System.Data.SqlClient
ADO.NET ஐப் பயன்படுத்தி தரவுத்தளங்களுடன் தொடர்பு கொள்ள இந்தப் பெயர்வெளிகள் பயன்படுத்தப்படுகின்றன
System.IO
System.IO.Compression
System.IO.Ports
இந்த இடைவெளிகளில் கோப்பு I/O, தரவு சுருக்கம் மற்றும் போர்ட் கையாளுதல் ஆகியவற்றைக் கையாள வடிவமைக்கப்பட்ட பல வகைகள் உள்ளன.
அமைப்பு.பிரதிபலிப்பு
சிஸ்டம்.பிரதிபலிப்பு.எமிட்
இந்த பெயர்வெளிகளில் இயங்கும் நேர வகை கண்டுபிடிப்பு மற்றும் டைனமிக் வகை உருவாக்கம் ஆகியவற்றை ஆதரிக்கும் வகைகள் உள்ளன
System.Runtime.InteropServices இந்த நேம்ஸ்பேஸில் .NET வகைகளை "நிர்வகிக்கப்படாத குறியீடு" (C-அடிப்படையிலான DLLகள் மற்றும் COM சேவையகங்கள் போன்றவை) மற்றும் நேர்மாறாகவும் தொடர்பு கொள்ள அனுமதிக்கும் வழிமுறைகள் உள்ளன.
சிஸ்டம்.வரைதல்
System.Windows.Forms
இந்த பெயர்வெளிகளில் சொந்த .NET (Windows Forms) கிராபிக்ஸ் கருவித்தொகுப்பைப் பயன்படுத்தி டெஸ்க்டாப் பயன்பாடுகளை உருவாக்கப் பயன்படுத்தப்படும் வகைகள் உள்ளன.
சிஸ்டம்.விண்டோஸ்
System.Windows.Controls
அமைப்பு.விண்டோஸ்.வடிவங்கள்
விண்வெளி சிஸ்டம்.விண்டோஸ்விண்டோஸ் பிரசன்டேஷன் ஃபவுண்டேஷன் (WPF) வரைகலைக் கருவிகளின் தொகுப்பைக் குறிக்கும் இந்த பல பெயர்வெளிகளில் ரூட் ஆகும்.
System.Linq
System.Xml.Linq
System.Data.DataSetExtensions
இந்த பெயர்வெளிகளில் LINQ API ஐப் பயன்படுத்தி நிரலாக்கம் செய்யும்போது பயன்படுத்தப்படும் வகைகள் உள்ளன
System.Web ASP.NET இணைய பயன்பாடுகளை உருவாக்க உங்களை அனுமதிக்கும் பல பெயர்வெளிகளில் இந்த பெயர்வெளியும் ஒன்றாகும்
System.ServiceModel Windows Communication Foundation (WCF) API ஐப் பயன்படுத்தி விநியோகிக்கப்பட்ட பயன்பாடுகளை உருவாக்க நீங்கள் பயன்படுத்தக்கூடிய பலவற்றில் இந்தப் பெயர்வெளியும் ஒன்றாகும்.
சிஸ்டம்.வொர்க்ஃப்ளோ.இயக்க நேரம்
அமைப்பு.பணிப்பாய்வு.செயல்பாடுகள்
Windows Workflow Foundation (WWF) API ஐப் பயன்படுத்தி பணிப்பாய்வு-இயக்கப்பட்ட பயன்பாடுகளை உருவாக்கப் பயன்படுத்தப்படும் வகைகளைக் கொண்ட பல பெயர்வெளிகளின் முக்கிய பிரதிநிதிகள் இந்த இரண்டு பெயர்வெளிகள் ஆகும்.
அமைப்பு.த்ரெடிங்
அமைப்பு.த்ரெடிங்.பணிகள்
இந்த நேம்ஸ்பேஸ் பல சிபியுக்களில் பணிச்சுமையை விநியோகிக்கக்கூடிய பல-திரிக்கப்பட்ட பயன்பாடுகளை உருவாக்குவதற்கான பல வகைகளைக் கொண்டுள்ளது.
அமைப்பு.பாதுகாப்பு பாதுகாப்பு என்பது .NET உலகில் இயல்பாகவே உள்ளது. பாதுகாப்பு தொடர்பான பெயர்வெளிகளில் அனுமதிகள், கிரிப்டோகிராஃபிக் பாதுகாப்பு போன்ற பல வகைகள் உள்ளன.
System.Xml இந்த எக்ஸ்எம்எல்-சார்ந்த பெயர்வெளியில் எக்ஸ்எம்எல் தரவுடன் தொடர்பு கொள்ளப் பயன்படுத்தக்கூடிய பல வகைகள் உள்ளன.

மைக்ரோசாஃப்ட் ரூட் ஸ்பேஸின் பங்கு

அட்டவணையில் உள்ள பட்டியலை ஆய்வு செய்யும் போது, ​​கணினி பெயர்வெளி என்பது ஒரு கண்ணியமான எண்ணிக்கையிலான உள்ளமை பெயர்வெளிகளின் (System.IO, System.Data போன்றவை) வேர் என்பதை எளிதாகக் கவனிக்க முடிந்தது. இருப்பினும், கணினிக்கு கூடுதலாக, அடிப்படை வகுப்பு நூலகம் பல உயர்-நிலை ரூட் பெயர்வெளிகளை வழங்குகிறது, அவற்றில் மிகவும் பயனுள்ளதாக இருக்கும் மைக்ரோசாப்ட் பெயர்வெளி.

நேம்ஸ்பேஸ் std ஐப் பயன்படுத்துவது என்ன என்ற கேள்விக்கு பதிலளிக்கும் போது, ​​முதலில், ஆங்கிலத்தில் இருந்து மொழிபெயர்க்கப்பட்ட வார்த்தையின் அர்த்தம் ஒரு பெயர் இடத்தைக் குறிக்கிறது, இது பிரகடனத்தின் நோக்கம், பல்வேறு அடையாள வடிவங்களை வரையறுக்க அவசியம்: செயல்பாடுகள் மற்றும் சார்பு/சுயாதீன மாறிகள்.

இதற்கு நன்றி, பெயர்களுக்கு இடையில் எந்த முரண்பாடும் இல்லை, ஏனெனில் பல மாறிகள் ஒரே மதிப்புகளை எடுக்கும் சூழ்நிலைகள் உள்ளன. பொதுவாக, வெவ்வேறு நூலகங்கள் உருவாக்கப்படும் போது இது நிகழ்கிறது.

அடையாளங்காட்டிகள் ஒன்றுக்கொன்று தொடர்பில் இலவசமாகக் கிடைக்கின்றன. முழுப் பெயர் வடிவமைப்பைப் பயன்படுத்தும் போது அவர்கள் சுதந்திர உறுப்பினர்களுக்கு இலவச அணுகலைப் பெறுகிறார்கள்.

இதற்கு இது மிகவும் முக்கியமானதுபொருள் பெயர்வெளி std ஐப் பயன்படுத்தி பெயரின் முழு வடிவத்தைக் கொண்டுள்ளது. ஸ்பேஸ் பெயரில் வைக்கப்படும் போது அறிவிப்பு எப்படி இருக்கும் என்பதை பார்வைக்கு புரிந்துகொள்வது இது முக்கியம்.

குறியாக்கங்களுக்கான அணுகலின் பல மாறுபாடுகளை படம் காட்டுகிறது, அதன் வேலிகளுக்குள்ளும் அதற்கு அப்பாலும் அமைந்துள்ளது:

1 இது போல் தெரிகிறது முழு பெயர்:

2 ஏற்கனவே இருக்கும் விளம்பரத்திற்கு துணையாக, இதைப் பயன்படுத்தி சேர்:

3 ஏற்கனவே உள்ள அனைத்து ஐடிகளையும் சேர்க்க, பொருத்தமான கட்டளையைப் பயன்படுத்தவும்:

கட்டளையைப் பயன்படுத்துதல்

பயன்பாட்டிற்கான கட்டளையானது பெயர்வெளியில் சேர்க்கப்பட்டுள்ள அனைத்து பெயர்களையும் பயன்படுத்த அனுமதிக்கிறது.

தகுதியை குறிப்பிட வேண்டிய அவசியமில்லை.

நீங்கள் சிபிபி வடிவ கோப்பில் பயன்படுத்த வேண்டும்.இருப்பினும், ஒரு முக்கியமான நிபந்தனை பல அடையாளங்காட்டிகளின் இருப்பு ஆகும்.

ஓரிரு பெயர்கள் மட்டுமே இருந்தால், ஒரு சாதாரண பெயரை உருவாக்குவது பொருத்தமானதாக இருக்கும்.

பின்னர் நீங்கள் தேவையான அடையாளங்காட்டிகளை மட்டும் சேர்க்கலாம் மற்றும் மீதமுள்ளவற்றை தனியாக விட்டுவிடலாம்.

உள்ளூர் மாறியின் பெயர் மற்றும் பிரதானமானது இணைந்தால், இந்த விஷயத்தில் முதலாவது மறைக்கப்பட்ட அணுகலில் இருக்கும் என்பதை கவனத்தில் கொள்ள வேண்டும்.

அதே பெயரில் மாறிகளை உருவாக்குவது சட்டவிரோதமானது என்பதை நினைவில் கொள்ளவும்.

அறிவுரை!பயன்பாட்டின் எளிமைக்காக, சிபிபி வடிவக் கோப்பின் மேற்புறத்தில், அல்லது அதற்கு நேர்மாறாக, உருவாக்கப்பட்ட நூலகத்தின் உள்ளே பயன்படுத்துவதற்கான கட்டளையை அமைக்கலாம்.

உங்களுக்காக மிகவும் வசதியான வேலை நிலைமைகளை உறுதிப்படுத்த, தேவையான கோப்புகளை வைப்பதில் நீங்கள் பணியாற்றலாம்.

முற்றிலும் தேவைப்படாவிட்டால், பயன்படுத்துவதற்கான கட்டளையை வைக்கக்கூடாது H வடிவ கோப்பில் உள்ள தலைப்புகளில்.

இந்த செயலின் மூலம், அனைத்து அடையாளங்காட்டிகளும் தெரிவுநிலை துறையில் செயலில் இருக்கும், சில பெயர்கள் முரண்படுவதற்கான வாய்ப்பை அதிகரிக்கும்.

கோப்புகளுக்கு, முழுப் பெயரைப் பயன்படுத்துவதே சிறந்த தீர்வாகும்.

அவை மிக நீளமாக இருந்தால், நீங்கள் மாற்றுப்பெயர்களின் வடிவத்தில் சுருக்கங்களைப் பயன்படுத்தலாம்.

பெயர்வெளி அறிவிப்புகள்

கோப்புப் பெயர்கள் வடிவில் விளம்பரங்கள் வைப்பது வழக்கம். குறிப்பிட்ட செயல்பாடுகளை செயல்படுத்துவது ஒரு தனி நூலகம் அல்லது கோப்பில் இருந்தால், முழு பெயரையும் தீர்மானிக்க வேண்டியது அவசியம்.

நாம் என்ன செயல்களைப் பற்றி பேசுகிறோம் என்பதைப் புரிந்து கொள்ள, அது மதிப்புக்குரியது பின்வரும் படத்தைப் பாருங்கள்:

cpp. வடிவமைப்பு contosodata செயல்பாட்டைச் செயல்படுத்த, வழக்கில் முழுப் பெயரைப் பயன்படுத்துவதும் முக்கியம் உத்தரவு ஆரம்பத்தில் இருக்கும் போது:

பெயர்வெளி std ஐப் பயன்படுத்துதல். ஒரே கோப்பில் ஒரே நேரத்தில் பல பிரிவுகளில் விளம்பரங்கள் இருக்கலாம்.

கம்பைலர் காரணமாக, தரவு செயலாக்கப்படும் போது அனைத்து கூறுகளும் இணைக்கப்படுகின்றன.

எனவே, எடுத்துக்காட்டாக, std., ஒரு விதியாக, நிலையான வகையின் அணுகக்கூடிய நூலகங்களில் அமைந்துள்ள அணுகக்கூடிய கோப்புகளின் அனைத்து தலைப்புகளிலும் அறிவிக்கப்படுகிறது.

முழுத் தகுதியான பெயரால் நியமிக்கப்பட்ட உறுப்பினர்கள், வெளிப்படையான தகுதியைப் பெற்றிருந்தால், பெயர் இடைவெளியில் மட்டுமல்ல, அதற்கு வெளியேயும் வரையறுக்கப்படலாம்.

வரையறையைப் பொறுத்தவரை, அது உருவாக்கப்பட்ட பெயர்வெளியில் அறிவிப்புக்குப் பிறகு வர வேண்டும்.

ஒரு காட்சி எடுத்துக்காட்டு, பின்வரும் படத்திற்கு கவனம் செலுத்துங்கள்:

பெரும்பாலும், வரையறையின் வரிசையை மீறும் போது இந்த பிழை தோன்றும், அல்லது முழு பெயரின் கூறுகள் உடனடியாக கிடைக்கக்கூடிய பொருட்களில் சேர்க்கப்படும்.

ஒரு குறிப்பிட்ட பெயர்வெளியில் குக்கீகள் அறிவிக்கப்படாதபோது, இது முறையாக உலகளாவிய வகையின் இடத்திற்கு சொந்தமானது.

அறிவுரை!முற்றிலும் தேவைப்படாவிட்டால், உலகளாவிய வகை இடத்தில் உறுப்பினர்களைச் சேர்ப்பதைத் தவிர்க்க பரிந்துரைக்கப்படுகிறது.

விதிக்கு ஒரு குறிப்பிடத்தக்க விதிவிலக்கு மட்டுமே இருக்க முடியும் முக்கிய விருப்பம், ஒரு பரந்த இடத்தில் கட்டாயமாகச் சேர்ப்பதைக் குறிக்கிறது.

உலகளாவிய வகை அடையாளங்காட்டியை உருவாக்க, நீங்கள் முழுப் பெயரின் வடிவத்தில் தொடர்புடைய தெரிவுநிலை செயல்பாட்டைப் பயன்படுத்த வேண்டும்.

இந்தச் செயல், வேறு பெயர்வெளியில் இருக்கும் மற்றவற்றிலிருந்து ஒரு அடையாளங்காட்டியின் தனித்துவமான சொத்தை உருவாக்க உதவும்.

இது குறியீட்டைப் புரிந்துகொள்ள உதவும்.

விண்வெளி வகுப்பு.

இடைவெளிகள் உள்ளமை வகையாக இருக்கலாம் என்பது கவனிக்கத்தக்கது.

ஒரு சாதாரண உட்பொதித்தல் என்றால், அது முழு இடத்திற்கும் வரம்பற்ற தன்மையைக் கொண்டுள்ளது.

பெற்றோர் உறுப்பினர்களைப் பற்றி பேசுகையில், அவர்களுக்கு அத்தகைய செயல்பாடு இல்லை.

விரிவாக்கத்திற்கு, உள்ளமைக்கப்பட்ட இணைப்புகள் தேவை.

இன்னும் துல்லியமான வரையறை மற்றும் புரிதலுக்கு, பின்வரும் படத்திற்கு கவனம் செலுத்துங்கள்:

மேலும் செயலாக்கத்திற்கான தகவலை இணைக்கிறது, இது ஒரு சாதாரண உள்ளமை இடத்தின் ஒரு பகுதியாகவும், பெற்றோர் இடத்தில் திறந்த வகை இடைமுகமாகவும் செயல்படும்.

ஒப்பீடுகள் என்பது நிலையான வகையின் சாதாரண இணைப்புகள், பெற்றோர் பெயர் இடத்தின் உள்ளமைக்கப்பட்ட உறுப்பினர்கள்.

இதன் விளைவாக, சில வகையான சுமைகளைக் கொண்ட செயல்பாடுகளுக்கான தேடலை நீங்கள் பயன்படுத்தலாம், அங்கு வாதங்களின் சார்பு இருக்கும்.

பிணைப்பு எவ்வாறு செய்யப்படுகிறது என்பதற்கான உதாரணத்தைப் பார்க்க, பின்வரும் உதாரணத்தைக் குறிப்பிடுவது மதிப்பு:

பின்வரும் படம் பெற்றோர் ஸ்பேஸ் டெம்ப்ளேட்டில் நிபுணத்துவ செயல்முறையைக் காட்டுகிறது, உள்ளமைக்கப்பட்ட வகையின் தற்காலிக இடத்தில் அறிவிக்கப்பட்டவை:

உள்ளமைக்கப்பட்ட இடைவெளிகளைப் பயன்படுத்துவதன் மூலம், நிலையான நூலகங்களில் இடைமுகத்தின் வெவ்வேறு பதிப்புகளை நிர்வகிக்க முடியும்.

ஒரு ஒற்றை பெற்றோர் இடத்தை உருவாக்கி, வழங்கப்பட்ட ஒவ்வொரு இடைமுகத்தையும் இணைக்க முடியும்.

இருப்பினும், இது பகிரப்பட்ட பெற்றோர் இடத்தில் இணைப்பின் வடிவத்தில் இருக்க வேண்டும்.

பின்னர் கிளையன்ட் குறியீடு தானாகவே புதிய சேர்க்கைக்கு ஒதுக்கப்படும்.

பழைய பதிப்பைப் பயன்படுத்தப் பழகிய பயனர்கள் எந்த பிரச்சனையும் இல்லாமல் தொடர்ந்து பயன்படுத்தலாம்.

இதை செய்ய, நீங்கள் இணைப்புக்கான முழு பாதையை உருவாக்க வேண்டும்.

முதல் அறிவிப்பை ஒழுங்கமைக்க, நீங்கள் இன்லைன் விசையைப் பயன்படுத்த வேண்டும்.

இரண்டு இடைமுக விருப்பங்களின் பின்வரும் எடுத்துக்காட்டைப் பார்ப்போம், ஒவ்வொன்றிற்கும் இடம் உள்ளது. கிளையன்ட் குறியீடு புதிய நூலகங்களைப் பயன்படுத்தும் திறனையும் கொண்டுள்ளது.

செயல்முறையை காட்சிப்படுத்த பின்வரும் படத்திற்கு செல்லலாம்:

அனைத்து பெயர்களும் மிகவும் தனித்துவமானதாக இருக்க வேண்டும்; எனவே, அவற்றின் நீளம் கணிசமாக அதிகரிக்கிறது.

இருப்பினும், இங்கே பயன்படுத்துவதற்கான கட்டளையைப் பயன்படுத்த முடியாது.

பெயர்வெளிக்கு மாற்றுப்பெயரை உருவாக்குவது மட்டுமே சாத்தியமாகும்.

இந்த வழக்கில், பின்வரும் உதாரணத்தைக் கவனியுங்கள்:

ஒரு சாதாரண இடத்தை உருவாக்குவதும் சாத்தியமாகும், ஆனால் அதற்கு மாற்றுப்பெயர் ஒதுக்கப்படவில்லை.

அத்தகைய பிராந்திய நிறமாலை அநாமதேயமானது என்று அழைக்கப்படுகிறது.

ஒரு விதியாக, பிரகடனத்தில் உள்ள உறுப்பினர்கள் மற்ற பொருட்களில் குறியாக்கம் செய்ய கண்ணுக்கு தெரியாத சூழ்நிலைகளில் இது பயன்படுத்தப்படுகிறது.

முழு அமைப்பும், அனைத்து அடையாளங்காட்டிகளையும் காண முடியும், இருப்பினும், உருவாக்கப்பட்ட இடத்திற்கு வெளியே, அவை கண்ணுக்கு தெரியாததாக இருக்கும்.

என்பது குறிப்பிடத்தக்கது, பெயர்வெளியே தொகுதிக்கு வெளியே கண்ணுக்கு தெரியாததாக இருக்கும், எனவே ஒவ்வொரு பயனரும் இந்த விவரத்தை முன்கூட்டியே கவனத்தில் கொள்ள வேண்டும்.

பொதுவாக, விஷுவல் சி++ல் பணிபுரிபவர்களுக்கு அறிவைப் பயன்படுத்துவது அவசியம்.

உயர்தர உதாரணங்களைப் பயன்படுத்தி, இந்த தலைப்பைப் புரிந்துகொள்வது மிகவும் எளிதாக இருக்கும்.

முந்தைய எடுத்துக்காட்டுகளில் உருவாக்கப்பட்ட எங்கள் வரிசை வகுப்பைப் பகிர விரும்புகிறோம் என்று வைத்துக்கொள்வோம். இருப்பினும், இந்தப் பிரச்சனையை நாங்கள் மட்டும் கையாளவில்லை; ஒருவேளை எங்காவது யாரோ, இன்டெல்லின் பிரிவுகளில் ஒன்றில், அதே பெயரில் ஒரு வகுப்பை உருவாக்கியிருக்கலாம். இந்த வகுப்புகளின் பெயர்கள் ஒரே மாதிரியாக இருப்பதால், சாத்தியமான பயனர்கள் இரண்டு வகுப்புகளையும் ஒரே நேரத்தில் பயன்படுத்த முடியாது; அவர்கள் அவற்றில் ஒன்றைத் தேர்ந்தெடுக்க வேண்டும். வகுப்பின் பெயரில் அதன் டெவலப்பர்களை அடையாளம் காணும் சில சரங்களைச் சேர்ப்பதன் மூலம் இந்தச் சிக்கல் தீர்க்கப்படுகிறது.

வகுப்பு Cplusplus_Primer_Third_Edition_Array ( ... );

நிச்சயமாக, இது பெயரின் தனித்துவத்திற்கு உத்தரவாதம் அளிக்காது, ஆனால் இது பெரும்பாலும் இந்த சிக்கலில் இருந்து பயனரைக் காப்பாற்றும். இருப்பினும், இவ்வளவு நீளமான பெயர்களைப் பயன்படுத்துவது எவ்வளவு சிரமமானது!
C++ தரநிலையானது பெயர் பொருத்துதல் சிக்கலைத் தீர்ப்பதற்கான ஒரு பொறிமுறையை வழங்குகிறது பெயர்வெளி. ஒவ்வொரு மென்பொருள் உற்பத்தியாளரும் அதன் வகுப்புகள், செயல்பாடுகள் மற்றும் பிற பொருட்களை அதன் சொந்த பெயர்வெளியில் மடிக்கலாம். எடுத்துக்காட்டாக, எங்கள் வரிசை வகுப்பின் அறிவிப்பு இதுபோல் தெரிகிறது:

பெயர்வெளி Cplusplus_Primer_3E ( டெம்ப்ளேட் வகுப்பு வரிசை(...); )

நேம்ஸ்பேஸ் திறவுச்சொல் எங்கள் வகுப்பின் தெரிவுநிலையை வரையறுக்கும் பெயர்வெளியைக் குறிப்பிடுகிறது, இந்த வழக்கில் Cplusplus_Primer_3E என அழைக்கப்படுகிறது. வெவ்வேறு பெயர்வெளிகளில் மற்ற டெவலப்பர்களிடமிருந்து வகுப்புகள் உள்ளன என்று வைத்துக்கொள்வோம்:

பெயர்வெளி IBM_Canada_Laboratory (வார்ப்புரு வகுப்பு வரிசை(...);
வகுப்பு மேட்ரிக்ஸ்(...);
}
பெயர்வெளி Disney_Feature_Animation (
வகுப்பு புள்ளி(...);
டெம்ப்ளேட் வகுப்பு வரிசை(...);
}

இயல்பாக, வெளிப்படையான பெயர்வெளி இல்லாமல் அறிவிக்கப்பட்ட பொருள்கள் நிரலில் தெரியும்; அவை சேர்ந்தவை உலகளாவியபெயர்வெளி. வேறொரு இடத்திலிருந்து ஒரு பொருளைக் குறிப்பிட, நீங்கள் அதன் தகுதியான பெயரைப் பயன்படுத்த வேண்டும், இதில் பெயர்வெளி அடையாளங்காட்டி மற்றும் பொருள் அடையாளங்காட்டி, ஸ்கோப் ரெசல்யூஷன் ஆபரேட்டரால் பிரிக்கப்பட்ட (::). மேலே உள்ள எடுத்துக்காட்டுகளில் உள்ள பொருள்களை அழைப்பது எப்படி இருக்கும்:

Cplusplus_Primer_3E::அரே உரை; IBM_Canada_Laboratory::Matrix mat; Disney_Feature_Animation ::Point origin(5000,5000);

பயன்பாட்டின் எளிமைக்காக, நீங்கள் பெயர்வெளிகளுக்கு மாற்றுப்பெயர்களை ஒதுக்கலாம். புனைப்பெயர் குறுகியதாகவும் நினைவில் கொள்ள எளிதாகவும் தேர்ந்தெடுக்கப்பட்டது. உதாரணத்திற்கு:

// பெயர்வெளி LIB = IBM_Canada_Laboratory; பெயர்வெளி DFA = Disney_Feature_Animation;
int main()
{
LIB::வரிசை ia(1024);
}

பெயர்வெளிகளின் பயன்பாட்டை மறைக்க மாற்றுப்பெயர்களும் பயன்படுத்தப்படுகின்றன. மாற்றுப்பெயரை மாற்றுவதன் மூலம், செயல்பாடுகள் மற்றும் வகுப்புகளின் தொகுப்பை மாற்றலாம், மற்ற எல்லா வகைகளிலும் நிரல் குறியீடு அப்படியே இருக்கும். மேலே உள்ள எடுத்துக்காட்டில் ஒரு வரியை மட்டும் சரிசெய்வதன் மூலம், முற்றிலும் மாறுபட்ட வரிசையின் வரையறையைப் பெறுகிறோம்:

பெயர்வெளி LIB = Cplusplus_Primer_3E; int main() (LIB::Array ia(1024); )

நிச்சயமாக, இது சாத்தியப்படுவதற்கு, வகுப்பு இடைமுகங்களுக்கும் இந்தப் பெயர்வெளிகளில் அறிவிக்கப்பட்ட செயல்பாடுகளுக்கும் இடையே சரியான பொருத்தம் இருக்க வேண்டும். Disney_Feature_Animation இன் வரிசை வகுப்பில் ஒரு அளவுரு - அளவு கொண்ட கன்ஸ்ட்ரக்டர் இல்லை என்று கற்பனை செய்து கொள்வோம். பின்வரும் குறியீடு பிழையை ஏற்படுத்தும்:

பெயர்வெளி LIB = Disney_Feature_Animation;
int main()
{
LIB::வரிசை ia(1024);
}

இன்னும் வசதியான வழி, சில பெயர்வெளியில் வரையறுக்கப்பட்ட பொருட்களைக் குறிப்பிடுவதற்கு எளிமையான, தகுதியற்ற பெயரைப் பயன்படுத்துவதாகும். இதைப் பயன்படுத்துவதற்கான உத்தரவு உள்ளது:
#"IBM_Canada_Laboratory.h" அடங்கும்

IBM_Canada_Laboratory என்ற பெயர்வெளியைப் பயன்படுத்துதல்;
int main()
{
மேட்ரிக்ஸ் மேட்(4,4);
// IBM_Canada_Laboratory ::அரே
வரிசை ia(1024);
// ...
}

IBM_Canada_Laboratory பெயர்வெளி நிரலில் தெரியும். நீங்கள் முழு இடத்தையும் பார்க்க முடியாது, ஆனால் அதில் உள்ள தனிப்பட்ட பெயர்கள் (தேர்ந்தெடுக்கப்பட்ட கட்டளையைப் பயன்படுத்தி):

IBM_Canada_Laboratory
// மேட்ரிக்ஸ் மட்டுமே தெரியும்
int main()
{
// IBM_Canada_Laboratory ::Matrix
மேட்ரிக்ஸ் மேட்(4,4); // பிழை: IBM_Canada_Laboratory::Array கண்ணுக்கு தெரியாதது
வரிசை ia(1024);
// ... }

நாம் ஏற்கனவே குறிப்பிட்டுள்ளபடி, C++ நிலையான நூலகத்தின் அனைத்து கூறுகளும் std பெயர்வெளியில் அறிவிக்கப்படும். எனவே, நிலையான செயல்பாடுகள் மற்றும் வகுப்புகளை நேரடியாகப் பயன்படுத்த, தலைப்புக் கோப்பைச் சேர்த்தால் மட்டும் போதாது:

#சேர்க்கிறது // பிழை: சரம் கண்ணுக்கு தெரியாதது

நீங்கள் கட்டளையைப் பயன்படுத்த வேண்டும்:

#சேர்க்கிறது பெயர்வெளி std ஐப் பயன்படுத்துதல்; // சரி: சரத்தைப் பார்க்கவும்
string current_chapter = "C++ Review";

எவ்வாறாயினும், இந்த வழியில் நாம் உலகளாவிய பெயர்வெளியை "அடைக்கும்" சிக்கலுக்குத் திரும்புகிறோம், அதைத் தீர்க்க பெயரிடப்பட்ட இடைவெளிகளின் வழிமுறை உருவாக்கப்பட்டது. எனவே தகுதியான பெயரைப் பயன்படுத்துவது நல்லது:

#சேர்க்கிறது // சரி: தகுதியான பெயர் std::string current_chapter = "C++ கண்ணோட்டம்"; அல்லது தேர்ந்தெடுக்கப்பட்ட உத்தரவு: #include பெயர்வெளி std:: string ஐப் பயன்படுத்துதல்; // சரி: சரம் தெரியும்
string current_chapter = "C++ Review";

பிந்தைய முறையைப் பயன்படுத்த பரிந்துரைக்கிறோம்.
இந்தப் புத்தகத்தில் உள்ள பெரும்பாலான எடுத்துக்காட்டுகளில், பெயர்வெளி உத்தரவுகள் தவிர்க்கப்பட்டுள்ளன. குறியீட்டின் அளவைக் குறைக்க இது செய்யப்படுகிறது, மேலும் பெரும்பாலான எடுத்துக்காட்டுகள் பெயர்வெளிகளை ஆதரிக்காத கம்பைலர் மூலம் தொகுக்கப்பட்டுள்ளன - இது C++ இல் சமீபத்திய கண்டுபிடிப்பு. (C++ ஸ்டாண்டர்ட் லைப்ரரியில் பணிபுரியும் போது அறிவிப்புகளைப் பயன்படுத்துவதற்கான விவரங்கள் பிரிவு 8.6 இல் விவாதிக்கப்பட்டுள்ளன.)
பின்வரும் அத்தியாயங்களில், மேலும் நான்கு வகுப்புகளை உருவாக்குவோம்: சரம், அடுக்கு, பட்டியல் மற்றும் அடுக்கின் மாற்றம். அவை அனைத்தும் ஒரே பெயர்வெளியில் இணைக்கப்படும் - Cplusplus_Primer_3E. (அத்தியாயம் 8 இல் பெயர்வெளிகளுடன் பணிபுரிவது பற்றி விரிவாகப் பேசுகிறோம்.)

பயிற்சி 2.21

பெயர்வெளி கொடுக்கப்பட்டுள்ளது

பெயர்வெளி பயிற்சி (வார்ப்புரு வகுப்பு வரிசை(...);
டெம்ப்ளேட்
வெற்றிட அச்சு (வரிசை< EType >);
வகுப்பு சரம் (...)
டெம்ப்ளேட்
வகுப்பு பட்டியல்(...);
}

மற்றும் நிரல் உரை:

Int main() ( const int size = 1024; வரிசை (அளவு); பட்டியல் il (அளவு);
// ...
வரிசை *பாஸ் = புதிய வரிசை (எனவே);
பட்டியல் *பில் = புதிய பட்டியல் (நான் L);
அச்சு (* பாஸ்);
}

பயன்படுத்தப்படும் வகுப்புகளின் அறிவிப்புகள் உடற்பயிற்சி பெயர்வெளியில் இணைக்கப்பட்டுள்ளதால் நிரல் தொகுக்கப்படவில்லை. நிரல் குறியீட்டைப் பயன்படுத்தி மாற்றவும்
(அ) ​​தகுதியான பெயர்கள்
(ஆ) கட்டளையைப் பயன்படுத்தி தேர்ந்தெடுக்கப்பட்டவை
(இ) மாற்றுப்பெயர் பொறிமுறை
(ஈ) கட்டளையைப் பயன்படுத்துதல்

சிறுகுறிப்பு: இந்தப் பகுதி பெயர்வெளிகளின் பயன்பாடு மற்றும் அறிவிப்பை விவரிக்கிறது. RDF, XML-தரவு, ஆவண உள்ளடக்க விளக்கம் (DCD), பொருள் சார்ந்த XMLக்கான ஸ்கீமா (SOX), ஆவண வரையறை மார்க்அப் மொழி (DDML, முன்பு XSchema என அறியப்பட்டது) ஆகியவற்றின் முக்கிய பண்புகள் கொடுக்கப்பட்டுள்ளன.

டிடிடி வரையறைகளின் சில தீமைகளை நாங்கள் முன்பு விவரித்தோம், அவை தொடர்புடையவை:

  1. இந்த வரையறைகளின் தொடரியல் XML இன் தொடரியல் இருந்து வேறுபடுகிறது (குறிப்பாக, நீட்டிக்கப்பட்டவை என அழைக்கப்படுவது பேக்கஸ்-நார் வடிவம், நீட்டிக்கப்பட்ட பேக்கஸ் நௌர் படிவம்);
  2. இந்த வரையறைகள் போதுமான அளவு வெளிப்படுத்தப்படவில்லை;
  3. ஒவ்வொரு பயனரும் தங்கள் சொந்த குறிச்சொற்களை உருவாக்க முடியும் என்பதால், வெவ்வேறு விஷயங்களைக் குறிப்பிடுவதற்கு மக்கள் ஒரே உறுப்பு பெயர்களைப் பயன்படுத்துவார்கள். உறுப்புகளின் அர்த்தங்கள் ஒரே மாதிரியாக இருந்தாலும், அவற்றின் சாத்தியமான உள்ளடக்கம் வரையறையைப் பொறுத்து மாறுபடலாம். எனவே ஒரு தனிமத்தின் குறிப்பிட்ட பயன்பாடுகளை வரையறுக்க ஒரு வழி தேவை, குறிப்பாக ஒரே ஆவணத்தில் வெவ்வேறு வகையான சொற்களஞ்சியங்களை நாம் கலந்தால். சிக்கலைத் தீர்க்க, W3C ஆனது XML பெயர்வெளிகள் எனப்படும் விவரக்குறிப்பை வெளியிட்டது, இது ஒரு பெயர்வெளியில் உள்ள உறுப்புகளின் சூழலை வரையறுக்க உங்களை அனுமதிக்கிறது.
  4. வெவ்வேறு DTD வரையறைகளுடன் தொடர்புடைய பல்வேறு ஆதாரங்களில் இருந்து XML ஆவணங்களை இணைக்க வேண்டிய சூழ்நிலைகள் உள்ளன. எடுத்துக்காட்டாக, ஒரு பெரிய அளவிலான தகவலை விவரிக்கும் போது இந்த நிலைமை எழுகிறது, முழுத் தொகுதியையும் உள்ளடக்குவதற்கு தனிப்பட்ட DTDகள் போதுமானதாக இல்லாவிட்டால் அல்லது அவற்றைப் புரிந்துகொள்வது கடினம். உங்கள் வணிகக் கூட்டாளியின் தரவை உங்களுடன் இணைக்க முயற்சிக்கும் போது இது ஈ-காமர்ஸ் அமைப்புகளிலும் நிகழ்கிறது. ஒரு நிலையான வடிவத்தில் சில தகவல்களைப் பரிமாறிக் கொள்ள, ஏற்கனவே உள்ள DTD இல் உங்கள் அமைப்புகளைச் சேர்க்க வேண்டிய சூழ்நிலையும் ஏற்படலாம். துரதிர்ஷ்டவசமாக, XML பரிந்துரையானது பல DTDகளை ஒரே ஆவணத்தில் மாற்றாமல் அல்லது புதிய DTDயை உருவாக்காமல் (வெளிப்புற குறிப்புகளைப் பயன்படுத்தி) இணைக்கும் வழியை வழங்கவில்லை.

இந்த அத்தியாயம் பின்வரும் இரண்டு கருத்துக்களை உள்ளடக்கியது - பெயர்வெளிமற்றும் எக்ஸ்எம்எல் ஸ்கீமாக்கள். பெயர்வெளிகள் எக்ஸ்எம்எல் டெவலப்பர்களை ஒரு சிக்கலான சிக்கலை சிறிய துண்டுகளாக உடைத்து, அதை முழுமையாக விவரிக்க ஒரே ஆவணத்தில் பல சொற்களஞ்சியங்களை இணைக்க அனுமதிக்கின்றன. ஸ்கீமாக்களைப் பயன்படுத்தி, அகராதி வடிவமைப்பாளர்கள் DTD களில் சாத்தியமானதை விட மிகவும் துல்லியமான வரையறைகளை உருவாக்குகிறார்கள், மேலும் XML தொடரியல் பயன்படுத்தி அவ்வாறு செய்கிறார்கள்.

XML ஐப் பயன்படுத்தும் போது எழும் சிக்கலான சிக்கல்களைத் தீர்க்க இந்த இரண்டு கருவிகளும் உதவுகின்றன. பெயர்வெளிகள் மற்றும் திட்டங்கள் XML வடிவமைப்பாளர்கள் மற்றும் புரோகிராமர்களை அனுமதிக்கின்றன:

  • சிக்கலான சிக்கல்களைத் தீர்க்க சொல்லகராதிகளை ஒழுங்கமைப்பது நல்லது;
  • வை வலுவான தட்டச்சுஎக்ஸ்எம்எல் மற்றும் இலிருந்து மாற்றங்களின் போது தரவு;
  • டிடிடி மூலம் சாத்தியமானதை விட, சொற்களஞ்சியங்களை மிகவும் துல்லியமாகவும் நெகிழ்வாகவும் விவரிக்கவும்;
  • எக்ஸ்எம்எல்லில் அகராதி விதிகளைப் படிக்கவும், பாகுபடுத்தி சிக்கலாக்காமல் அதன் வரையறைகளை அணுகவும்.

அகராதிகளை கலத்தல்

ஒரு அகராதியை வடிவமைக்கும் போது, ​​உலகளாவிய பிரச்சனையை பல கூறுகளாக உடைப்பது அர்த்தமுள்ளதாக இருக்கும். இதற்கு ஒரு பெரிய சிக்கலைப் பல சொற்களஞ்சியங்களாகப் பிரிப்பதற்கான வழிகள் தேவை. இருப்பினும், தீர்க்கப்பட வேண்டிய உண்மையான பிரச்சனை, தனித்தனி DTDகளை ஒரு ஆவணத்தின் உடலில் இணைப்பதாகும். எடுத்துக்காட்டாக, நீங்கள் ஒரு நிறுவனத்தில் பணிபுரிந்தால் கூட இந்த சிக்கல் எழலாம், அதில் ஏற்கனவே டிடிடி வரையறைகள் உள்ளன, மேலும் அவற்றின் பயன்பாடு வேலையை பெரிதும் எளிதாக்கும், ஏனெனில் அவர்கள் சிக்கலை மற்றவர்கள் புரிந்துகொள்வது போல் விவரிக்கிறார்கள். DTD வரையறைகளை மீண்டும் பயன்படுத்துவதும் பயனுள்ளதாக இருக்கும், அதாவது. முன்பு உருவாக்கப்பட்ட DTD வரையறைகளிலிருந்து பொதுவான கட்டுமானங்களைப் பயன்படுத்துதல். வெளிப்புற கூட்டாளரின் மென்பொருளுடன் தொடர்பு கொள்ள வேண்டிய பயன்பாட்டை நீங்கள் உருவாக்கினால், ஏற்கனவே உள்ள கருத்துகளை மீண்டும் பயன்படுத்துவதைத் தவிர வேறு வழியில்லை. DTD இன் தற்போதைய வரையறைகள் புரிந்துகொள்ளப்படுவதற்குப் பேசப்பட வேண்டிய பொதுவான மொழியாகும். ஒரு கருத்து ஏற்கனவே இருந்தால், அந்த கருத்தின் அடிப்படையில் புரிந்து கொள்ள ஒருவர் வேலை செய்ய வேண்டும்.

பிற டெவலப்பர்களின் DTD களில் இருந்து உங்களுக்குப் பயனுள்ள வரையறைகளைப் பயன்படுத்தும்போது அல்லது சிக்கலான சிக்கலை விவரிக்கும் ஆவணத்தை உருவாக்க, பிரிக்கப்பட்ட DTDகளை இணைக்கும்போது, ​​உங்கள் ஆவணங்கள் அதே பெயர்களைக் கொண்ட கூறுகளைப் பயன்படுத்தினால், சிக்கலில் சிக்குவதற்கான அபாயத்தை நீங்கள் எதிர்கொள்கிறீர்கள். தெளிவின்மை மற்றும் பெயர் மோதல்கள்.

பல டிடிடிகளில் இருந்து பெயர் நிகழ்வுகளைப் பயன்படுத்தும் போது சிக்கல் மேலும் அதிகரிக்கிறது. இந்த வழக்கில், எந்த உறுப்பு, எந்த டிடிடி வரையறை குறிப்பிடுகிறது என்பது எங்களுக்குத் தெரியாது, நன்கு வடிவமைக்கப்பட்ட ஆவணங்களின் இந்த சிக்கல் தெளிவின்மை என்று அழைக்கப்படுகிறது. மேலும், ஆவணத்தில் இருந்து பெயர்கள் தேவைப்பட்டால் செல்லுபடியாகும் சோதனைகள், நமது விண்ணப்பத்தை மிகவும் குழப்பமானதாக மாற்றலாம். இந்த பிரச்சனை பெயர் மோதல் என்று அழைக்கப்படுகிறது.

பெயர்வெளிகள்

பெயர்வெளிகள் பயனருக்கு இரண்டு மிக முக்கியமான வழிகளில் உதவும். அவர்களின் உதவியுடன் உங்களால் முடியும்:

  • ஒரு உறுப்பு அல்லது பண்புக்கூறு எந்த மூலத்திலிருந்து எடுக்கப்பட்டது என்பதை நிரல் வேறுபடுத்தும் என்ற நம்பிக்கையை இழக்காமல் இரண்டு அல்லது அதற்கு மேற்பட்ட ஆதாரங்களில் இருந்து ஆவணங்களை இணைக்கவும்;
  • முடிந்தால், ஆவண வகை வரையறை (DTD) அல்லது உறுப்புகள் மற்றும் பண்புக்கூறுகளின் பிற விளக்கம் போன்ற கூடுதல் உள்ளடக்கத்திற்கான அணுகலை பயனர் முகவரை அனுமதிக்கவும்.

பெயர்வெளி என்பது எக்ஸ்எம்எல் ஆவணங்களில் உறுப்புகள் அல்லது பண்புக்கூறுகளின் பெயர்களாகப் பயன்படுத்தக்கூடிய சில மதிப்புகள் அல்லது பண்புகளின் தொகுப்பாகும். XML இல் உள்ள பெயர்வெளிகள் ஒரு சீரான ஆதார அடையாளங்காட்டி (URI) மூலம் வரையறுக்கப்படுகின்றன (உங்கள் சர்வரில் உள்ள DTD முகவரியை URI ஆகப் பயன்படுத்தலாம்). இது ஒவ்வொரு பெயர்வெளியையும் தனித்துவமாக இருக்க அனுமதிக்கிறது.

எனவே, வெவ்வேறு மூலங்களிலிருந்து கூறுகளை இணைக்கும் ஆவணத்தில் பெயர்வெளிகளை திறம்பட பயன்படுத்த, நாம் வரையறுக்க வேண்டும்:

  • உறுப்பின் பயன்பாட்டை விவரிக்கும் URI பற்றிய குறிப்பு.
  • நமது உறுப்பு எந்த பெயர்வெளியில் இருந்து வருகிறது என்பதைப் புரிந்துகொள்ள அனுமதிக்கும் மாற்றுப்பெயர். இந்த மாற்றுப்பெயர் ஒரு உறுப்பு முன்னொட்டு வடிவத்தில் உள்ளது (உதாரணமாக, ஒரு தெளிவற்ற புத்தக உறுப்புக்கான மாற்றுப்பெயர் பட்டியல் என்றால், உறுப்பு அழைக்கப்படுகிறது ).

பெயர்வெளிகளைப் பயன்படுத்துதல் மற்றும் அறிவித்தல்

பெயர்வெளி பிரகடனம்

வெவ்வேறு மார்க்அப் மொழிகளில் - எக்ஸ்எம்எல் செயலாக்கங்கள் - குறிச்சொற்களின் ஒரே பெயர்கள் மற்றும் அவற்றின் பண்புக்கூறுகள் முற்றிலும் வேறுபட்ட அர்த்தங்களைக் கொண்டிருப்பதால், அவற்றை எப்படியாவது வேறுபடுத்திப் பார்க்க வேண்டியது அவசியம். இதைச் செய்ய, குறிச்சொற்கள் மற்றும் பண்புக்கூறுகளின் பெயர்களுக்கு ஒரு குறுகிய முன்னொட்டு வழங்கப்படுகிறது, இது பெயரிலிருந்து பெருங்குடலால் பிரிக்கப்படுகிறது. பெயர் முன்னொட்டு பெயர்வெளியை வரையறுக்கும் அடையாளங்காட்டியுடன் தொடர்புடையது. ஒரே அடையாளங்காட்டியுடன் தொடர்புடைய முன்னொட்டுகள் உள்ள அனைத்து குறிச்சொல் மற்றும் பண்புக்கூறு பெயர்களும் ஒரு பெயர்வெளியை உருவாக்குகின்றன, அதில் பெயர்கள் தனித்துவமாக இருக்க வேண்டும்.

ஒரு பெயர்வெளி அறிவிப்பைப் பார்க்கும்போது அதை அனைவரும் அடையாளம் காண வேண்டும் என்று நாங்கள் விரும்புவதால், அதற்கு ஒரு சிறப்பு வார்த்தையை நாங்கள் ஒதுக்குகிறோம். பெயர்வெளிகள் பரிந்துரையின்படி, வார்த்தை xmlns . பண்புக்கூறின் மதிப்பு URI ஆகும், இது பயன்படுத்த வேண்டிய பெயர்வெளியைக் குறிப்பிடுகிறது. இது பெரும்பாலும் DTD வரையறை URL ஆகும், ஆனால் அது எப்போதும் அப்படி இருக்க வேண்டியதில்லை. பெயர்வெளி முன்னொட்டு மற்றும் அடையாளங்காட்டி ஆகியவை xmlns பண்புக்கூறால் பின்வருமாறு வரையறுக்கப்படுகின்றன:

நீங்கள் பார்க்க முடியும் என, ntb முன்னொட்டு இப்போது வரையறுக்கப்பட்டுள்ளது, ஆனால் இது ஏற்கனவே ntb: notebook என்ற பெயரில் பயன்படுத்தப்படலாம். எதிர்காலத்தில், http://some.firm.com/2003/ntbml என்ற பெயர்வெளிக்கு நாம் ஒதுக்க விரும்பும் குறிச்சொற்கள் மற்றும் பண்புக்கூறுகளின் பெயர்கள் ntb உடன் முன்னொட்டாக இருக்கும், எடுத்துக்காட்டாக:

கோரெலோவோ

கூடுதலாக, ஒரு குறிச்சொல்லில் பல பெயர்வெளிகள் ஏற்படலாம். பல பெயர்வெளிகளை கலப்பதற்கான உதாரணம் கீழே உள்ளது:

புத்தக உறுப்பு பட்டியல் பெயர்வெளியில் இருந்து வருகிறது, மேலும் ISBN பண்புக்கூறு வரிசையில் இருந்து வருகிறது.

எடுத்துக்காட்டாக, முன்னொட்டுடன் பெயரிடவும்

நீட்டிக்கப்பட்ட, தகுதியான அல்லது தகுதியான பெயர் (OName. தகுதியான பெயர்). பெருங்குடலுக்குப் பிறகு எழுதப்பட்ட பெயரின் பகுதி பெயரின் உள்ளூர் பகுதி என்று அழைக்கப்படுகிறது.

வலை வளப் பெயர்களின் பெயரிடல் குழப்பமாக இருக்கலாம். இணையத்தள முகவரி ( சீரான ஆதார இருப்பிடம், URL) அணுகல் நெறிமுறை மற்றும் பிணைய இருப்பிடத்தின் அடிப்படையில் ஒரு ஆதாரத்தைக் குறிக்கிறது. சீரான வள அடையாளங்காட்டி ( சீரான வள அடையாளங்காட்டி, URI) என்பது சில ஆதாரங்களுக்கான தனித்துவமான பெயர். URI ஐ ஒரு பெயர்வெளியை அடையாளப்படுத்தும் எழுத்துகளின் தனித்துவமான சரமாக பாருங்கள்.

SGML மற்றும் XML விதிகளின்படி, ஒரு பெருங்குடலைப் பெயர்களில் ஒரு சாதாரண எழுத்தாகப் பயன்படுத்தலாம், எனவே முன்னொட்டைக் கொண்ட பெயர் ஒரு தந்திரம் மட்டுமே; பெயர்வெளியை "தெரியாத" எந்த நிரலும் ஆவணத்தைப் பாகுபடுத்தி, நடத்துகிறது. ஒரு சாதாரண பெயராக தகுதியான பெயர். இது பின்வருமாறு, குறிப்பாக, அதில் ஆவண வகை அறிவிப்பு(ஆவண வகை அறிவிப்பு) பெயர் முன்னொட்டுகளைத் தவிர்க்க முடியாது.

xmlns பண்புக்கூறு ரூட் உறுப்பு மட்டுமின்றி எந்த எக்ஸ்எம்எல் உறுப்பிலும் தோன்றும். அது வரையறுக்கும் முன்னொட்டு xmlns பண்புக்கூறு எழுதப்பட்ட உறுப்பு மற்றும் அதற்குள் உள்ள அனைத்து உறுப்புகளிலும் பயன்படுத்தப்படலாம். மேலும், ஒரு உறுப்பில் பல பெயர்வெளிகளை வரையறுக்கலாம்.

உள்ளமைக்கப்பட்ட உறுப்புகளில், முன்னொட்டை வேறு அடையாளங்காட்டியுடன் இணைப்பதன் மூலம் பெயர்வெளியை மேலெழுதலாம்.

பெயர்வெளியைப் பயன்படுத்தும் ஆவணத்தில் முன்னொட்டு இல்லாமல் டேக் பெயர் தோன்றினால், பெயர் இயல்புநிலை பெயர்வெளிக்கு சொந்தமானது என்று அர்த்தம்.

நன்கு வடிவமைக்கப்பட்ட ஆவணம் அதன் அனைத்து உறுப்புகளுக்கும் பெயர்வெளிகளைப் பயன்படுத்த வேண்டும்.

எக்ஸ்எம்எல் எழுத்துகளுடன் தொடங்கும் முன்னொட்டுகள் எக்ஸ்எம்எல் மொழிக்கே ஒதுக்கப்படும். xmlns முன்னொட்டு மற்றொரு, வரையறுக்கப்பட்ட, முன்னொட்டை அதன் பெயர்வெளி அடையாளங்காட்டியுடன் இணைக்கப் பயன்படுகிறது. xmlns முன்னொட்டு வரையறுக்கப்பட வேண்டிய அவசியமில்லை, இது "XML இல் பெயர்வெளிகள்" பரிந்துரையால் அறிமுகப்படுத்தப்பட்டது மற்றும் பெயர்வெளி அடையாளங்காட்டியுடன் தொடர்புடையது http://www.w3.ori/2000 /xmlns/.

மற்றொரு முன்னொட்டு, xml, அடையாளங்காட்டியுடன் அதே பரிந்துரையில் இணைக்கப்பட்டுள்ளது http://www.w3.org/XML/1998/namespace. இது XML ஆவணத்தில் வரையறுக்கப்பட வேண்டிய அவசியமில்லை. இந்த அடையாளங்காட்டிகளுடன் வேறு எந்த முன்னொட்டையும் தொடர்புபடுத்த முடியாது. இடைவெளி எழுத்துகளை அப்படியே வைத்திருக்க அறிவுறுத்தல்களைப் பாதுகாக்கவும். நிரல் குறியீடுகள் போன்ற சில உரைகளுக்கு இது முக்கியமானது. இயல்புநிலை மதிப்பு ஹேண்ட்லரின் விருப்பத்திற்கு இடைவெளியை விட்டுவிடுகிறது.

வாய்ப்பு

நிரலாக்க மொழிகளில் மாறி அறிவிப்புகளைப் போலவே பெயர்வெளி அறிவிப்புகளுக்கும் ஒரு நோக்கம் உள்ளது. XML ஆவணத்தின் தொடக்கத்தில் பெயர்வெளிகள் எப்போதும் அறிவிக்கப்படுவதில்லை, சில சமயங்களில் அவை அடுத்தடுத்த பிரிவுகளில் அறிவிக்கப்படும் என்பதால் இது முக்கியமானது. ஒரு பெயர்வெளி அறிவிப்பு அது தோன்றும் உறுப்புக்கும், அந்த தனிமத்தின் வழித்தோன்றல்களுக்கும் பொருந்தும், அது அங்கு வெளிப்படையாக வரையறுக்கப்படாவிட்டாலும் கூட. ஒரு பெயர் அதன் அறிவிப்பின் எல்லைக்குள் பயன்படுத்தப்பட்டால் மட்டுமே பெயர்வெளியைக் குறிக்க முடியும்.

இருப்பினும், மற்ற பெயர்வெளிகளை மரபுரிமையாகப் பெறக்கூடிய உறுப்புகளில் பெயர்வெளி நோக்கங்களையும் நாம் கலக்க வேண்டும். இது சம்பந்தமாக, நோக்கத்தை அறிவிப்பதற்கான இரண்டு வழிகள் வரையறுக்கப்பட்டுள்ளன: இயல்புநிலை மற்றும் தகுதி.

இயல்புநிலை நோக்கம்

நீங்கள் எதிர்பார்ப்பது போல, ஒரு ஆவணத்தில் உள்ள ஒவ்வொரு பெயரையும் முன்னொட்டாக வைப்பது விரைவில் கடினமானதாகிவிடும். உண்மையில், பெயர் நோக்கம் என்ற கருத்தை அறிமுகப்படுத்துவதன் மூலம், நமது ஆவணத்தில் அதிக எண்ணிக்கையிலான முன்னொட்டுகளை கலக்கலாம். நாம் ஒரு இயல்புநிலை பெயர்வெளியை வரையறுத்தால், அதன் அறிவிப்பின் எல்லைக்குள் தகுதியற்ற பெயர்கள் அனைத்தும் சொந்தமாக இருக்கும் என்று கருதப்படுகிறது. எனவே, ரூட் உறுப்பில் அறிவிக்கப்பட்ட இயல்புநிலை பெயர்வெளி முழு ஆவணத்திற்கும் இயல்புநிலையாகக் கருதப்படுகிறது மற்றும் ஆவணத்தில் அறிவிக்கப்பட்ட ஒரு குறிப்பிட்ட பெயர்வெளியால் மட்டுமே மேலெழுத முடியும்.

ஒரு பெயர்வெளியை ஒரு நோக்கத்திற்கான இயல்புநிலை பெயர்வெளியாக மாற்ற, முன்னொட்டு அறிவிப்பைத் தவிர்க்கவும்.

ஒரு முன்னொட்டு அறிவிக்கப்பட்டு, ஒரு பெயருடன் இணைந்து பயன்படுத்தப்பட்டால், பெயர்வெளி வெளிப்படையாக நிறுவப்பட்டதாகக் கூறப்படுகிறது. பெயர்வெளிக்கு தகுதியற்ற பெயரை ஒதுக்க, தகுதியற்ற பெயரை (முன்னொட்டு இல்லாமல்) உள்ளடக்கிய இயல்புநிலை இடத்தை நீங்கள் அறிவிக்க வேண்டும்.

தகுதியான நோக்கம்

உங்கள் பெயர்வெளிகளைத் தெளிவாகப் பிரிக்க முடிந்தால், மேலே உள்ள முறை நன்றாக வேலை செய்கிறது. ஆனால் சில நேரங்களில் ஒரு ஆவணத்தில் வெளிப்புற பெயர்வெளிகளில் இருந்து தனிப்பட்ட பெயர்களைச் சேர்க்க வேண்டியது அவசியம். முழு நோக்கத்திற்கான பெயர்வெளிகளை அறிவிப்பதற்குப் பதிலாக, நீங்கள் தகுதியான பெயர்களைப் பயன்படுத்தலாம். ஆவணத்தின் தொடக்கத்தில் உங்களுக்குத் தேவையான பெயர்வெளிகளை அறிவிக்கவும், பின்னர் அவற்றைப் பயன்படுத்தும் இடத்தில் தகுதிப்படுத்தவும்.

உதவும்.
PHP இல் நேம்ஸ்பேஸ் ஆதரவுக்கான பாதை மிகவும் கடினமான ஒன்றாகும். ஆனால் அதிர்ஷ்டவசமாக இது PHP 5.3 இல் மொழியில் சேர்க்கப்பட்டது, மேலும் PHP குறியீட்டின் அமைப்பு அதன் பின்னர் கணிசமாக மேம்பட்டுள்ளது. ஆனால் அவற்றை எவ்வாறு சரியாகப் பயன்படுத்த வேண்டும்?

பெயர்வெளிகள் என்றால் என்ன?

"நீங்கள் பெயர்வெளி பெயரை ஒரு சரமாக சேமிக்கும்போது பின்சாய்வுகளை மறந்துவிடாதீர்கள்!"

ஒரு பெயர்வெளியை நீங்கள் எதையும் வைக்கக்கூடிய ஒரு பெட்டியாக நினைத்துப் பாருங்கள்: ஒரு பென்சில், ஒரு ஆட்சியாளர், ஒரு துண்டு காகிதம் மற்றும் பல. இவை உங்கள் விஷயங்கள். உங்கள் பெட்டிக்கு கீழே வேறொருவரின் பெட்டி உள்ளது, அதன் உரிமையாளர் அதே பொருட்களை அதில் வைத்திருக்கிறார். ஒருவருக்கொருவர் பொருட்களைப் பயன்படுத்துவதைத் தவிர்க்க, பெட்டிகளை லேபிளிட முடிவு செய்கிறீர்கள், இதனால் யாருக்கு சொந்தமானது என்பது தெளிவாகிறது.

முன்னதாக, டெவலப்பர்கள் தங்கள் வகுப்புகள், செயல்பாடுகள் மற்றும் மாறிலிகளில் குறியீட்டைப் பிரிக்க அடிக்கோடிட்டு முன்னொட்டுகளைப் பயன்படுத்த வேண்டியிருந்தது. ஒவ்வொருவரும் தங்கள் பொருட்களை லேபிளிட்டு ஒரு பெரிய பெட்டியில் சேமித்து வைப்பதற்கு இது சமம். நிச்சயமாக, இது குறைந்தபட்சம் சில வகையான அமைப்பு, ஆனால் இது மிகவும் பயனற்றது.

பெயர்வெளிகள், உதவி! நீங்கள் அதே செயல்பாடு, வகுப்பு, இடைமுகம் ஆகியவற்றை அறிவிக்கலாம் மற்றும் அபாயகரமான பிழைகள் இல்லாமல் தனி பெயர்வெளிகளில் மாறிலியை வரையறுக்கலாம். அதன் மையத்தில், பெயர்வெளிகள் என்பது வழக்கமான PHP குறியீட்டைக் கொண்ட குறியீடுகளின் படிநிலையாக லேபிளிடப்பட்ட தொகுதிகளைத் தவிர வேறில்லை.

நீங்கள் அவற்றைப் பயன்படுத்துங்கள்!

நீங்கள் பெயர்வெளிகளை மறைமுகமாகப் பயன்படுத்துகிறீர்கள் என்பதைப் புரிந்துகொள்வது அவசியம்; PHP 5.3 இன் படி, பயனர் வரையறுக்கப்பட்ட பெயர்வெளிகளில் ஏற்கனவே அறிவிக்கப்படாத அனைத்து வரையறைகளும் உலகளாவிய பெயர்வெளியின் கீழ் வரும்.

உலகளாவிய நேம்ஸ்பேஸ், mysqli_connect() , மற்றும் விதிவிலக்கு வகுப்பு போன்ற PHP இன் அனைத்து உள் வரையறைகளையும் சேமிக்கிறது. உலகளாவிய பெயர்வெளிக்கு தனித்துவமான அடையாளம் காணும் பெயர் இல்லாததால், இது பொதுவாக உலகளாவிய பெயர்வெளி என்று குறிப்பிடப்படுகிறது.

பெயர்வெளியைப் பயன்படுத்துவது விருப்பமானது என்பதை நினைவில் கொள்ளவும்.
உங்கள் PHP ஸ்கிரிப்ட் அவை இல்லாமல் நன்றாக வேலை செய்யும், மேலும் இந்த நடத்தை மிக விரைவில் மாறாது.

பெயர்வெளி வரையறை

பெயர்வெளியைக் கொண்ட கோப்பில், வேறு எந்தக் குறியீட்டிற்கும் முன்பாக அதன் அறிவிப்பு இருக்க வேண்டும். பெயர்வெளிக்கு முன் அறிவிக்கப்படக்கூடிய ஒரே விஷயம் declare என்ற ஒதுக்கப்பட்ட வார்த்தையாகும், கோப்பு குறியாக்கத்தைக் குறிக்க ஒரு பெயர்வெளி அறிவிப்புக்கு முன் அறிவிப்பு வெளிப்பாடு தோன்றும்.

பெயர்வெளிகள் ஒதுக்கப்பட்ட சொல் பெயர்வெளியைப் பயன்படுத்தி அறிவிக்கப்படுகின்றன. PHP இல் உள்ள மற்ற அடையாளங்காட்டிகளைப் போலவே பெயர்வெளிகளும் அதே விதிகளைப் பின்பற்றுகின்றன. எனவே பெயர்வெளி வேண்டும் ஒரு எழுத்து அல்லது அடிக்கோடினைத் தொடர்ந்து எந்த எண்ணிக்கையிலான எழுத்துக்கள், எண்கள் அல்லது அடிக்கோடிட்டுத் தொடங்குங்கள்.

குறியீட்டின் தொகுதியை உலகளாவிய இடத்தில் வரையறுக்க விரும்பினால், பெயரைச் சேர்க்காமல் பெயர்வெளி முக்கிய சொல்லைப் பயன்படுத்தலாம்.

நீங்கள் ஒரு கோப்பில் பல பெயர்வெளிகளைப் பயன்படுத்தலாம்.

பல்வேறு கோப்புகளுக்கும் ஒரே பெயர்வெளியைப் பயன்படுத்தலாம்; கோப்பு இணைப்பு செயல்முறை தானாகவே அவற்றை ஒன்றிணைக்கும். நீங்கள் வகுப்புகளில் செய்வது போலவே, பெயர்வெளி வரையறைகளின் எண்ணிக்கையை ஒரு கோப்பிற்கு மட்டுப்படுத்துவது நல்ல குறியீட்டு நடைமுறையாகும்.

சீரற்ற வரையறைகளைத் தவிர்க்கவும், நிரல் குறியீட்டில் அதிக நெகிழ்வுத்தன்மை மற்றும் அமைப்பை அறிமுகப்படுத்தவும் பெயர்வெளிகள் பயன்படுத்தப்படுகின்றன.

சுருள் பிரேஸ்கள் முற்றிலும் விருப்பமானவை என்பதை நினைவில் கொள்ளவும். உண்மையில், ஒரு கோப்பு விதிக்கு ஒரு பெயர்வெளியைப் பயன்படுத்துவது மற்றும் சுருள் பிரேஸ்களைத் தவிர்ப்பது உங்கள் குறியீட்டை மிகவும் சுத்தமாக்குகிறது - உள்ளமைக்கப்பட்ட குறியீட்டை உள்தள்ள வேண்டிய அவசியமில்லை.

துணைப்பெயர்கள்

கணினியில் உள்ள கோப்பு அமைப்பில் உள்ள கோப்பகங்களைப் போலவே பெயர்வெளிகளும் ஒரு குறிப்பிட்ட படிநிலையைப் பின்பற்றலாம். ஒரு திட்டத்தின் கட்டமைப்பை ஒழுங்கமைக்க துணைப்பெயர்கள் மிகவும் பயனுள்ளதாக இருக்கும். எடுத்துக்காட்டாக, உங்கள் திட்டத்திற்கு தரவுத்தள அணுகல் தேவைப்பட்டால், தரவுத்தள பெயர்வெளி துணைப்பெயர்வெளியில் தரவுத்தள விதிவிலக்கு ஹேண்ட்லர் மற்றும் இணைப்பு ஹேண்ட்லர் குறியீட்டை வைக்கலாம்.

நெகிழ்வுத்தன்மைக்கு, உள்ளமை பெயர்வெளிகளை துணை அடைவுகளில் சேமிப்பது புத்திசாலித்தனம். இது திட்டத்தை வடிவமைக்க உதவுகிறது மற்றும் PSR-4 தரநிலையைப் பின்பற்றும் ஆட்டோலோடர்களுக்குப் பயன்படுத்துவதை எளிதாக்குகிறது.

PHP பின்சாய்வுக்கோடானது பெயர்வெளி பிரிப்பானாகப் பயன்படுத்துகிறது.

சுவாரஸ்யமான உண்மை: RFC இல், எந்த நேம்ஸ்பேஸ் பிரிப்பானைப் பயன்படுத்த வேண்டும் என்பதைத் தீர்மானிக்க, எமோடிகானைப் பயன்படுத்துவதற்கான விருப்பம் கருதப்பட்டது.

// myproject/database/connection.phpநீங்கள் விரும்பும் பல உள்ளமை பெயர்வெளிகளைப் பயன்படுத்தலாம்.

உள்ளமைக்கப்பட்ட குறியீடு தொகுதிகளுடன் துணைப்பெயர் இடத்தை வரையறுப்பது ஆதரிக்கப்படாது. பின்வரும் உதாரணம் ஒரு அபாயகரமான பிழையை வழங்கும்: "பெயர்வெளி அறிவிப்புகளை உள்ளமைக்க முடியாது."

பெயர்வெளியில் இருந்து அழைப்புக் குறியீடு

நீங்கள் ஒரு பொருளின் புதிய நிகழ்வை உருவாக்க விரும்பினால், ஒரு செயல்பாட்டை அழைக்க அல்லது வெவ்வேறு பெயர்வெளிகளில் இருந்து மாறிலிகளைப் பயன்படுத்த விரும்பினால், நீங்கள் பின்சாய்வுக்கோட்டைப் பயன்படுத்துகிறீர்கள். மூன்று வகையான பெயர்வெளி பெயர் வரையறைகள் உள்ளன:
  • தகுதியற்ற பெயர்
  • தகுதியான பெயர்
  • முழு தகுதியான பெயர்

முழுமையற்ற பெயர்

இது ஒரு வர்க்கம், செயல்பாடு அல்லது மாறிலியின் பெயர், மேலும் எந்த பெயர்வெளியையும் குறிப்பதில்லை. பெயர்வெளிகளுடன் வேலை செய்யத் தொடங்குபவர்களுக்கு, இது ஒரு பொதுவான பார்வை.

முழு பெயர்

இப்படித்தான் நாம் துணைப்பெயர் வரிசைமுறையை அணுகுகிறோம்; பின்சாய்வு மூலம் பிரிக்கப்பட்டது.

கீழே உள்ள உதாரணம் ஒரு அபாயகரமான பிழையை வழங்கும்: "Fatal Error: Class "MyProject\Database\MyProject\FileAccess\Input" கிடைக்கவில்லை" ஏனெனில் MyProject\FileAccess\Input நீங்கள் இருக்கும் பெயர்வெளிக்கு பொருந்தாது.

முழுமையான பெயர்

நீங்கள் தற்போது இருக்கும் பெயர்வெளியில் முழு மற்றும் பகுதி பெயர்கள் பயன்படுத்தப்படுகின்றன. அந்த மட்டத்தில் அணுகலை வரையறுக்க அல்லது பெயர்வெளி வரிசைக்கு ஆழமாக டைவ் செய்ய அவை பயன்படுத்தப்படலாம்.

படிநிலையின் உயர் மட்டத்தில் இருக்கும் ஒரு செயல்பாடு, வகுப்பு அல்லது மாறிலியை நீங்கள் அணுக விரும்பினால், நீங்கள் முழுப் பெயரைப் பயன்படுத்த வேண்டும் - ஒரு முழுமையான பாதை, உறவினர் அல்ல. அழைப்பு ஒரு பின்சாய்வுடன் தொடங்க வேண்டும். உங்கள் தற்போதைய இருப்பிடத்துடன் தொடர்புடைய அழைப்பை அணுகாமல், உலகளாவிய இடத்திலிருந்து இந்த அழைப்பை மேற்கொள்ள வேண்டும் என்பதை இது PHPக்குத் தெரியப்படுத்துகிறது.

PHP இன் உள் செயல்பாடுகளுக்கு முழுப் பெயரையும் நாம் பயன்படுத்த வேண்டியதில்லை. செயல்பாடுகள் மற்றும் மாறிலிகளுக்கான தகுதியற்ற பெயர்கள் தற்போதைய பெயர்வெளியில் வரையறுக்கப்படாவிட்டால் உலகளாவிய பெயர்வெளியில் வரையறுக்கப்படும்.

இதை அறிந்தால், அசல் செயல்பாட்டை (அல்லது மாறிலி) அழைக்கும் போது, ​​உள் PHP செயல்பாடுகளை இப்போது ஓவர்லோட் செய்யலாம்.

"; }

டைனமிக் அழைப்புகள்

PHP ஒரு மாறும் நிரலாக்க மொழி; எனவே பெயர்வெளியில் இருந்து குறியீட்டை அழைக்க இந்த செயல்பாட்டைப் பயன்படுத்தலாம். இது டைனமிக் கிளாஸ் பெயரைப் பயன்படுத்துவது அல்லது டைனமிக் கோப்பை அதன் பெயரைச் சேமிக்க மாறியைப் பயன்படுத்தி இணைப்பது போன்றது. PHP பெயர் பிரிப்பான் சரங்களில் அதே மெட்டாக்ராக்டர்களைப் பயன்படுத்துகிறது. நேம்ஸ்பேஸ் பெயரை ஒரு சரமாக சேமிக்கும்போது பின்சாய்வு பற்றி மறந்துவிடாதீர்கள்!

பெயர்வெளி முக்கிய வார்த்தை

நேம்ஸ்பேஸ் திறவுச்சொல் ஒரு பெயர்வெளியை வரையறுக்க மட்டும் பயன்படுத்தப்படவில்லை, இது வகுப்புகளுக்கான சுய திறவுச்சொல்லைப் போலவே செயல்படும் தற்போதைய பெயர்வெளிக்கு அழைப்பை மேற்கொள்ளவும் பயன்படுகிறது.

__NAMESPACE__ மாறிலி

தற்போதைய வகுப்பின் பெயரை வரையறுக்க சுய திறவுச்சொல்லைப் பயன்படுத்த முடியாதது போல், தற்போதைய பெயர்வெளிக்கு பெயர்வெளி முக்கிய சொல்லைப் பயன்படுத்த முடியாது. எனவே __NAMESPACE__ மாறிலியைப் பயன்படுத்துகிறோம்

பெயர்வெளியைக் கற்கத் தொடங்கும் போது இந்த மாறிலி மிகவும் பயனுள்ளதாக இருக்கும்; இது பிழைத்திருத்தத்திற்கும் மிகவும் பயனுள்ளதாக இருக்கும். இது ஒரு சரம் என்பதால், மேலே விவாதிக்கப்பட்ட டைனமிக் குறியீடு அழைப்புகளுடன் இதைப் பயன்படுத்தலாம்.

ஒரு பெயரை இறக்குமதி செய்யவும் அல்லது உருவாக்கவும்

பெயர்வெளிகளில் பயன்படுத்த வேண்டிய அவசியமில்லை

PHP இல் உள்ள பெயர்வெளிகளின் ஒரு முக்கிய அம்சம் வெளிப்புற முழுமையான பெயரைக் குறிப்பிடும் திறன் ஆகும் புனைப்பெயர், அல்லது இறக்குமதி செய்கிறது.

பெயர்வெளிகளில் இறக்குமதிகள் மிகவும் பயனுள்ள மற்றும் அடிப்படை அம்சமாகும். பெயர் முரண்பாடுகளைப் பற்றி கவலைப்படாமல், நூலகங்கள் போன்ற வெளிப்புற தொகுப்புகளைப் பயன்படுத்தும் திறனை இது வழங்குகிறது. முக்கிய சொல்லைப் பயன்படுத்தி இறக்குமதி செய்யப்படுகிறது. விரும்பினால், முக்கிய சொல்லைப் பயன்படுத்தி தனிப்பயன் மாற்றுப்பெயரைக் குறிப்பிடலாம்.

பயன்படுத்த

அதை எப்படி பயன்படுத்துவது

ஒரு முழுமையான பெயரை ஒரு குறுகிய தகுதியற்ற பெயருடன் இணைக்க முடியும், எனவே நீங்கள் அதைப் பயன்படுத்த விரும்பும் ஒவ்வொரு முறையும் அதன் முழுமையான பெயரை எழுத வேண்டியதில்லை. மாற்றுப்பெயர் உருவாக்கம் அல்லது இறக்குமதி பெற்றோர் பெயர்வெளியில் அல்லது உலகளாவிய ஒன்றில் நிகழ வேண்டும். ஒரு முறை அல்லது செயல்பாட்டிற்குள் இதைச் செய்ய முயற்சிப்பது தவறான தொடரியல் ஆகும்.

ஒரு மாற்றுப் பெயரை வேறு பெயருடன் ஒதுக்குவது

விதிவிலக்கு போன்ற உலகளாவிய வகுப்புகளையும் நீங்கள் இறக்குமதி செய்யலாம். இறக்குமதி செய்யும் போது, ​​அதன் முழுமையான பெயரை நீங்கள் எழுத வேண்டியதில்லை.

பெயர்வெளியில் உள்ள பெயர்களுக்கு, ஒரு முன்னணி பின்சாய்வு தேவையில்லை மற்றும் அதன் இருப்பு பரிந்துரைக்கப்படவில்லை, ஏனெனில் இறக்குமதி செய்யப்பட்ட பெயர்கள் முழுமையானதாக இருக்க வேண்டும் மற்றும் தற்போதைய பெயர்வெளியுடன் ஒப்பிடும்போது அவை பாகுபடுத்தப்படாது.

டைனமிக் நேம்ஸ்பேஸ் அழைப்புக்கு ஆதரவு இருந்தாலும், டைனமிக் இறக்குமதி ஆதரிக்கப்படவில்லை.

முடிவுரை

வரையறை மோதலைத் தவிர்க்கவும், நிரல் குறியீட்டில் அதிக நெகிழ்வுத்தன்மை மற்றும் அமைப்பை அறிமுகப்படுத்தவும் பெயர்வெளிகள் பயன்படுத்தப்படுகின்றன. நீங்கள் பெயர்வெளிகளைப் பயன்படுத்தத் தேவையில்லை என்பதை நினைவில் கொள்ளுங்கள்; இந்த அம்சம் ஒரு பொருள் சார்ந்த அணுகுமுறையுடன் இணைந்து பயன்படுத்தப்படுகிறது. பெயர்வெளியைப் பயன்படுத்தி உங்கள் (எதிர்கால) PHP திட்டத்தை அடுத்த கட்டத்திற்கு எடுத்துச் செல்வதை நீங்கள் பரிசீலிப்பீர்கள் என்று நம்புகிறேன்.