Site bölümleri
Editörün Seçimi:
- Ask'ta şifre kurtarma
- Bir dizüstü bilgisayarda kamera nasıl açılır
- VKontakte'de neden müzik çalmıyor?
- Veri kaybı olmadan D sürücüsü pahasına C sürücüsünün boyutu nasıl artırılır
- Anakarttaki arızaların nedenleri Anakarttaki yonga seti yanmışsa
- Sohbetin orijinal adı
- Excel'de stilleri kullanma Kendi yeni stilinizi nasıl yaratabilirsiniz?
- Kurulum sırasında hangi hatalar ortaya çıkıyor?
- Bir kişinin toplumdaki sosyal statüsü
- Hataların tam yorumlanması
Reklam
Sınıflar ve ad alanları. Sınıflar ve Ad Alanları Ad Alanlarını Kullanma ve Bildirme |
Sınıflar ve Ad Alanları .NET Framework sınıflarıYönetilen kod yazmanın belki de en büyük faydası (en azından geliştirici açısından) şunları kullanabilmenizdir: .NET temel sınıf kitaplığı . .NET çekirdek sınıfları, daha önce Windows API kullanılarak çözülebilen hemen hemen her sorunu çözmenize olanak tanıyan çok sayıda yönetilen kod sınıfı koleksiyonu sağlar. Bu sınıfların tümü, tek kalıtımla aynı IL nesne modelini takip eder. Bu, herhangi bir .NET temel sınıfından nesneler oluşturabileceğiniz veya onlardan kendi sınıflarınızı miras alabileceğiniz anlamına gelir. .NET temel sınıflarını farklı kılan şey, sezgisel ve kullanımı kolay olacak şekilde tasarlanmış olmalarıdır. Örneğin, bir iş parçacığı başlatmak için sınıfın Start() yöntemini çağırmanız gerekir. İplik. Bir TextBox nesnesini kullanılamaz duruma getirmek için nesnenin Enabled özelliğini false olarak ayarlayın. Kütüphanelerinin kullanımı da bir o kadar kolay olan Visual Basic ve Java geliştiricilerine tanıdık gelen bu yaklaşım, GetDIBits(), RegisterWndClassEx() ve IsEqualIID() gibi API işlevleriyle yıllardır uğraşan C++ geliştiricileri için büyük bir rahatlama olacaktır. yanı sıra pencere tutamaçlarını geçmeyi gerektiren birçok işlev. Bununla birlikte, C++ geliştiricileri her zaman tüm Windows API'lerine kolay erişime sahipken, Visual Basic 6 ve Java geliştiricileri kendi dillerinden eriştikleri temel işletim sistemi işlevleriyle sınırlıydı. .NET temel sınıfları, Visual Basic ve Java kitaplıklarının kullanım kolaylığını Windows API özellik kümesinin nispeten eksiksiz kapsamıyla birleştirir. Pek çok Windows özelliğine temel sınıflar aracılığıyla erişilemez ve bu durumlarda API işlevlerine başvurmanız gerekir, ancak genel olarak bu yalnızca en egzotik işlevler için geçerlidir. Günlük kullanım için genellikle bir dizi temel sınıf yeterli olacaktır. Ancak bir API işlevini çağırmanız gerekiyorsa, .NET sözde işlevi sağlar. platform çağırma mekanizması Veri türlerinin doğru şekilde dönüştürülmesini garanti eden , bu görev artık kodun hangi dilde (C#, C++ veya Visual Basic 2010) yazıldığına bakılmaksızın bu işlevleri doğrudan C++ kodundan çağırmaktan daha zor değil. Ad alanlarıAd alanları.NET'in sınıflar arasındaki adlandırma çakışmalarını önlemenin bir yoludur. Bunlar, bir müşteriyi temsil eden bir sınıf tanımladığınız, buna Müşteri adını verdiğiniz ve daha sonra başka birinin aynı şeyi yaptığı (bu oldukça yaygın bir senaryodur) durumları önlemek için tasarlanmıştır. Ad alanı, bir grup veri türünden başka bir şey değildir, ancak ad alanı içindeki tüm veri türlerinin adlarının otomatik olarak ad alanı adının önüne eklenmesi etkisine sahiptir. Ad alanları birbirinin içine yerleştirilebilir. Örneğin, genel amaçlı .NET temel sınıflarının çoğu ad alanında bulunur Sistem. Temel sınıf Sıralamak bu alanı ifade eder, dolayısıyla tam adı Sistem.Dizi. .NET platformu tüm adların bir ad alanı içinde bildirilmesini gerektirir; örneğin sınıfınızı koyabilirsiniz Sınıfım ad alanına Şirketim. O zaman bu sınıfın tam adı şöyle görünecek Şirketim.Sınıfım. Bir ad alanı açıkça belirtilmezse türün adsız genel ad alanına ekleneceğini unutmayın. Çoğu durumda, Microsoft en az iki iç içe ad alanının kullanılmasını önerir: Birincisi şirketinizin adıdır, ikincisi ise sınıfın ait olduğu teknoloji veya yazılım paketinin adıdır; yani şuna benzer: MyCompany.SomeNamespace .Sınıfım. Çoğu durumda bu yaklaşım, uygulamanızın sınıflarını, diğer şirketlerin geliştiricileri tarafından yazılan sınıf adlarıyla olası çatışmalardan koruyacaktır. Aşağıdaki tablo, .NET'te sunulan ve işlevselliğe göre gruplara ayrılmış ad alanlarının bazılarının (ama kesinlikle hepsinin değil) kısa bir listesini sağlar:
Microsoft kök alanının rolüTablodaki listeyi incelerken, System ad alanının yeterli sayıda iç içe geçmiş ad alanının (System.IO, System.Data vb. gibi) kökü olduğunu fark etmek kolaydı. Ancak görünen o ki, Sistem'e ek olarak temel sınıf kitaplığı aynı zamanda bir dizi başka üst düzey kök ad alanı da sunuyor; bunlardan en kullanışlısı Microsoft ad alanı. İsim alanı std'nin kullanılmasının ne olduğu sorusuna cevap verirken, öncelikle şunu belirtmek gerekir ki, İngilizce'den çevrildiğinde açıklanan terimin, bildirimin kapsamı olan ve çeşitli tanımlama formlarını tanımlamak için gerekli olan bir ad alanı anlamına geldiğine dikkat edilmelidir: fonksiyonlar ve bağımlı/bağımsız değişkenler. Bu sayede, birden fazla değişkenin aynı değerleri aldığı durumlar olduğu için isimler arasında herhangi bir çelişki yaşanmaz. Genellikle bu, farklı kitaplıklar oluşturulduğunda gerçekleşir. Tanımlayıcılar birbirleriyle ilişkili olarak serbestçe kullanılabilir. Tam ad biçimini kullanırken bağımsız üyelere ücretsiz erişim elde ederler. Bunun için son derece önemlidir böylece nesne std ad alanını kullanarak adın tam biçimini içerir. Bu, bildirimin alan adına yerleştirildiğinde nasıl göründüğünü görsel olarak anlamak açısından önemlidir. Resimde kodlamalara erişimin çeşitli varyasyonları gösterilmektedir, çitlerinin içinde ve arkasında bulunur: 1 İşte böyle görünüyor Ad Soyad: 2 Mevcut bir reklamı desteklemek amacıyla, kullanarak ekleyin: 3 Mevcut tüm kimlikleri eklemek için, uygun yönergeyi kullanın: Yönergeyi Kullanmausing yönergesi, ad alanında bulunan tüm mevcut adların kullanılmasına izin verir. Bir niteleyici belirtmeye gerek yoktur. Cpp formatındaki bir dosyada kullanarak kullanmanız gerekir. Ancak önemli bir koşul, birkaç tanımlayıcının varlığıdır. Sadece birkaç ismin olduğu durumlarda sıradan bir isim oluşturmak uygun olacaktır. Daha sonra yalnızca gerekli tanımlayıcıları ekleyebilir ve gerisini kendi haline bırakabilirsiniz. Yerel değişkenin adı ile ana değişkenin adı çakışıyorsa, bu durumda ilkinin gizli erişimde olacağını unutmamak önemlidir. Lütfen aynı adda değişken oluşturmanın yasa dışı olduğunu unutmayın. Tavsiye! Kullanım kolaylığı için, kullanma yönergesi cpp formatındaki dosyanın en üstüne yerleştirilebilir veya tam tersi, oluşturulan kitaplığın içine yerleştirilebilir. Kendiniz için en konforlu çalışma koşullarını sağlamak için gerekli dosyaları yerleştirmeye çalışabilirsiniz. Kesinlikle gerekli olmadıkça kullanma talimatı yerleştirilmemelidir. H formatındaki dosyadaki başlıklarda. Bunun nedeni, bu eylemle birlikte tüm tanımlayıcıların görünürlük alanında aktif hale gelmesi ve bazı adların çakışma olasılığının artmasıdır. Dosyalar için en iyi çözüm tam adı kullanmaktır. Çok uzun olmaları durumunda takma ad şeklinde bir kısaltma kullanabilirsiniz. Ad Alanı BildirimleriReklamların dosya adı biçiminde yerleştirilmesi gelenekseldir. Belirtilen işlevlerin yürütülmesinin ayrı bir kitaplıkta veya dosyada bulunması durumunda, tam adın belirlenmesi önemlidir. Hangi eylemlerden bahsettiğimizi anlamak için buna değer aşağıdaki resme göz atın: cpp.contosodata formatı fonksiyonunu uygulamak için, vakada tam adın kullanılması da önemlidir. direktif en başta olduğunda: Ad alanı std'sini kullanma. aynı dosyada birden fazla bölümdeki reklamları içerebilir. Derleyici sayesinde veri işlenirken tüm unsurlar birleştirilir. Bu nedenle, örneğin std., kural olarak, standart türdeki erişilebilir kitaplıklarda bulunan erişilebilir dosyaların tüm başlıklarında bildirilir. Tam nitelikli bir adla belirlenen üyeler, yalnızca ad alanı içinde değil, açık bir niteliğe sahip olmaları durumunda bunun dışında da tanımlanabilir. Tanıma gelince, oluşturulduğu ad alanındaki bildirimden sonra gelmelidir. Görsel bir örnek olarak aşağıdaki resme dikkat edin: Çoğu zaman, bu hata, tanım sırası ihlal edildiğinde veya tam adın kurucu kısımları hemen mevcut nesnelere dahil edildiğinde ortaya çıkar. Çerezler belirli bir ad alanında bildirilmediğinde, resmi olarak küresel tip uzayına aittir. Tavsiye! Kesinlikle gerekli olmadıkça, üyelerin global tip alanına dahil edilmesinden kaçınılması önerilir. Kuralın önemli bir istisnası ancak ana seçenek, geniş bir alana zorunlu olarak dahil olmayı ima ediyor. Genel bir tür tanımlayıcı oluşturmak için karşılık gelen görünürlük işlevini tam ad biçiminde etkinleştirmeniz gerekir. Bu eylem, bir tanımlayıcının farklı bir ad alanındaki diğer mevcut tanımlayıcılardan ayırt edici bir özelliğinin oluşturulmasına yardımcı olacaktır. Bu, kodu anlamanıza yardımcı olacaktır. Uzay std.Boşlukların iç içe geçmiş tipte olabileceğini belirtmekte fayda var. Sıradan bir gömme kastediliyorsa bu, tüm mekana sınırsız bir karakter kazandırıyor demektir. Veli üyelerinden bahsetmişken, onların böyle bir işlevi yoktur. Genişletme için yerleşik ataşmanlar gereklidir. Daha kesin bir tanım ve anlayış için, aşağıdaki resme dikkat edin: Daha ileri uygulama için bilgileri kapsülleyen bu öğe aynı zamanda sıradan bir iç içe geçmiş alanın parçası olabilir ve ana alanda açık tip bir arayüz görevi görebilir. Karşılaştırmalar standart tipteki sıradan eklerdir ve üst ad alanının yerleşik üyeleridir. Sonuç olarak, argümanlara bağımlılığın olacağı bir tür aşırı yüke sahip işlevler için aramayı kullanabilirsiniz. Bağlamanın nasıl yapıldığına dair bir örnek görmek için, Aşağıdaki örneğe değinmekte fayda var: Aşağıdaki resim ana alan şablonundaki uzmanlaşma sürecini göstermektedir, yerleşik bir türün geçici alanında bildirilen: Yerleşik alanlardan yararlanılarak standart kütüphanelerdeki arayüzün farklı versiyonlarını yönetmek mümkündür. Tek bir ana alan oluşturmak ve sunulan her arayüzü kapsüllemek mümkündür. Ancak, paylaşılan üst alandaki bir ek biçiminde olması gerekir. Daha sonra müşteri kodu otomatik olarak yeni kombinasyona atanır. Eski sürümü kullanmaya alışan kullanıcılar sorunsuz bir şekilde kullanmaya devam edebilirler. Bunu yapmak için ekin tam yolunu oluşturmanız gerekir. İlk duyuruyu düzenlemek için satır içi anahtar kullanmanız gerekir. Her birinde boşluk bulunan iki arayüz seçeneğinin aşağıdaki örneğine bakalım. İstemci kodu ayrıca yeni kitaplıklardan yararlanma yeteneğine de sahiptir. Süreci görselleştirmek için Aşağıdaki görsele geçelim: Tüm adların son derece benzersiz olması gerekir, bu nedenle uzunlukları önemli ölçüde artar; Ancak burada bir kullanma direktifinin kullanılması mümkün değildir. Yalnızca bir ad alanı için takma ad oluşturmak mümkündür. Bu durumda aşağıdaki örneği inceleyin: Sıradan bir alan oluşturmak da mümkündür ancak buna bir takma ad atanmaz. Böyle bir bölgesel spektruma anonim denir. Kural olarak, bildirimdeki üyelerin diğer nesnelerdeki kodlama için görünmez olması gereken durumlarda kullanılır. Tüm tanımlayıcılar görülebildiğinde tüm yapı, oluşturulan alanın dışında görünmez kalacaktır. Dikkate değer ad alanının kendisi de bloğun dışında görünmez olacaktır, dolayısıyla her kullanıcı bu ayrıntıyı önceden dikkate almalıdır. Tipik olarak, Visual C++ ile çalışanlar için bilginin kullanımı gereklidir. Kaliteli örnekler kullanarak bu konuyu anlamak çok daha kolay olacaktır.
C++'da ad alanı nedir? Ad alanı, mantıksal olarak ilişkili bildirimleri ortak bir ad altında gruplandırmanın bir yoludur. Ad alanı örneği: // @author Subbotin B.P..h" ilk ad alanı ( int a; float b; ) ad alanı ikinci ( int a; float b; ) int _tmain(int argc, _TCHAR* argv) ( birinci::a = 1; ikinci:: a = 2; birinci::b = 1,23; ikinci::b = 4,56; printf("\nilk::a = %d\n", birinci::a", ikinci::a); printf ("\nbirinci::b = %.2f\n", birinci::b); printf("\nikinci::b = %.2f\n\n", ikinci::b); Şunu elde ederiz: Örnekte iki ad alanı oluşturulmuştur: birinci ve ikinci. Her iki alan da aynı değişkenleri içerir. Ancak, tam olarak, örneğin a değişkeninin, başka bir ad alanındaki bir değişkenle karıştırılmasına izin vermeyen ilk önce alana ait olması gerçeğidir. Bu, ad çakışmalarını önler. ilk ad alanında bildirilen int değişkeninin kullanıldığı anlamına gelir. Bu bir kullanım bildirimi örneğidir. :: operatörüne kapsam belirleme operatörü denir. Ad alanları, ad alanı anahtar sözcüğü kullanılarak oluşturulur: Önce ad alanı ( int a; float b; ) Bir ad alanındaki tüm adları kullanmak için, kullanma ad alanı yönergesini kullanabilirsiniz. Ad alanı std'sini kullanma örneği: int _tmain(int argc, _TCHAR* argv) ( cout std ad alanını kullanmak, std ad alanındaki adları kullanmanıza olanak tanır. std, C++ standart kütüphanesinin adıdır. Son örnekte ad alanı std'sini kullanarak ad alanı bağlantı dizesini kaldırırsak, o zaman ad alanı adını açıkça belirtmemiz gerekecektir: int _tmain(int argc, _TCHAR* argv) ( std::cout Ad alanı kapsamı tanımlar. Örnekler açıkça ad alanlarını tanımladı. İşte diğer ad alanı örnekleri. Bir işlevin kapsamı aynı zamanda bir ad alanıdır. Global değişkenlerin kapsamı aynı zamanda bir ad alanıdır. Sınıf aynı zamanda bir ad alanıdır. İsimsiz bir isim alanı oluşturmak mümkündür. Örnek: // @author Subbotin B.P..h" ad alanı ( 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); Bu, kullanma ad alanı yönergesinin kullanımını ima eder. Olası ad çakışmalarını önlemek için bu tür ad alanlarına ihtiyaç vardır. // @author Subbotin B.P..h" yeraltı ad alanı ( int a; int b; ) ad alanı ug = yeraltı; 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); ad alanı ug = yer altı; yeraltı ad alanı için ug takma adını tanıtır. Daha sonra takma adla çalışıyoruz. Ad alanındaki adların yalnızca bir kısmını kullanmayı düşünüyorsanız bu bölümü yeni bir ad alanına seçip kullanabilirsiniz. Örnek: // @author Subbotin B.P..h" yer altı ad alanı ( int a; int b; int c; float d; double e; ) ad alanı ug ( underground::a; underground::b; kullanarak) 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); return 0; ) Burada yeraltı ad alanının beş değişkeninden yalnızca ikisini kullandığımızı varsayıyoruz. İki adet kullanım bildirimi içeren yeni bir ad alanı ug'si oluşturuyoruz. Daha sonra ug ad alanıyla çalışıyoruz. Ad alanı değiştirilebilir; buna yeni reklamlar ekleyin. Örnek: // @author Subbotin B.P..h" yeraltı ad alanı ( int a; int b; ) yeraltı ad alanı ( float c; ) int _tmain(int argc, _TCHAR* argv) ( yeraltı::a = 5; yeraltı::b = 8 ; yer altı::c = 1.2; printf("\n yer altı::a = %d\n", yer altı::a); printf("\n yer altı::b = %d\n", yer altı::b); ); printf("\n yer altı::c = %.1f\n\n", yer altı::c); Şunu elde ederiz: Ad alanları iç içe yerleştirilebilir Örnek: // @author Subbotin B.P..h" ad alanı üst ( int a; int b; ad alanı iç ( float c; ) ) int _tmain(int argc, _TCHAR* argv) ( Upper::a = 5; Upper::b = 8 ; üst::iç::c = 1,2; printf("\n üst::a = %d\n", üst::a); printf("\n üst::b = %d\n", üst ::b); printf("\n üst::iç::c = %.1f\n\n", üst::iç::c); Şunu elde ederiz: Örnekte, üst ad alanı iç ad alanını içerir. Dahili ad alanı alanına nasıl erişildiğine dikkat edin: üst::iç::c = 1,2; Şimdi küresel ad alanına bakalım. Burada:: operatörü, alan adı belirtilmeden kullanılır. Global ad alanı, karşılık gelen kullanım direktifleri de dahil olmak üzere global bildirimleri içerir. Genel ad alanı örneği: Son örnekte ad alanı std'sini kullanarak ad alanı bağlantı dizesini kaldırırsak, o zaman ad alanı adını açıkça belirtmemiz gerekecektir: Bildirimleri kullanma ile yönergeleri kullanma arasındaki farkı görmek önemlidir. Bir kullanma yönergesi belirli bir ad alanındaki tüm adları kullanılabilir hale getirir, ancak bunları yerel olarak bildirmez. Bir kullanma bildirimi, bir kullanma yönergesine göre önceliklidir. Bir örneğe bakalım: // @author Subbotin B.P..h" ad alanı sbp ( int a; int b; int c; ) int a; int _tmain(int argc, _TCHAR* argv) ( int a; ad alanını kullanma sbp; a = 1; sbp:: a = 2; ::a = 3; printf("\n a = %d\n", a); printf("\n sbp::a = %d\n", sbp::a); :a = %d\n\n", ::a); return 0; ) Şunu elde ederiz: ad alanı sbp'yi kullanma; Bu, sbp ad alanındaki tüm adları kullanılabilir hale getiren bir kullanma yönergesidir. Bu yerel değişken a ile çalışıyor. a değişkenine sbp alanından değer atamak için açıkça sbp'yi işaret etmeniz gerekir: Aynı durum global değişken a için de geçerlidir. Yerel değişken a, aynı isimdeki global değişkenleri kapatır. Şimdi kullanma bildirimine bir örnek: // @author Subbotin B.P..h" ad alanı sbp ( int a; int b; int c; ) int a; int _tmain(int argc, _TCHAR* argv) ( int a; a = 1; kullanma sbp::b; b = 2; ::a = 3; printf("\n a = %d\n", a); printf("\n sbp::b = %d\n", sbp::b); = %d\n\n", ::a); return 0; ) Şunu elde ederiz: Bu bir kullanım beyanıdır. Burada b değişkeni yerel olarak sbp ad alanından bildirilir. Bu duyurunun ardından aşağıdaki işlemleri gerçekleştirebilirsiniz: ancak bir için kullanım beyanı örnekte yerel değişken a zaten tanımlı olduğundan bizi hataya sürükler. Yardımcı olacaktır. Ad alanları, yardım edin! Aynı işlevi, sınıfı, arayüzü bildirebilir ve sabiti ayrı ad alanlarında ölümcül hatalar almadan tanımlayabilirsiniz. Özünde ad alanları, normal PHP kodunu içeren hiyerarşik olarak etiketlenmiş kod bloklarından başka bir şey değildir. Global ad alanı aynı zamanda PHP'nin mysqli_connect() ve Exception sınıfı gibi tüm dahili tanımlarını da saklar. Global ad alanının benzersiz bir tanımlayıcı adı olmadığından, buna çoğunlukla genel ad alanı denir. Ad alanları, ayrılmış sözcük ad alanı kullanılarak bildirilir. Ad alanları PHP'deki diğer tanımlayıcılarla aynı kurallara uyar. Yani ad alanı bir harf veya alt çizgiyle başlayıp ardından istediğiniz sayıda harf, rakam veya alt çizgi gelebilir. Bir kod bloğunu global bir alana tanımlamak istiyorsanız, ad eklemeden ad alanı anahtar sözcüğünü kullanabilirsiniz. Bir dosyada birden fazla ad alanı kullanabilirsiniz. Aynı ad alanını birkaç farklı dosya için de kullanabilirsiniz; dosya bağlantı işlemi bunları otomatik olarak birleştirecektir. Tıpkı sınıflarda olduğu gibi, ad alanı tanımlarının sayısını tek bir dosyayla sınırlamak iyi bir kodlama uygulamasıdır. Esneklik açısından iç içe geçmiş ad alanlarını alt dizinlerde depolamak akıllıca olacaktır. Bu, projenin yapılandırılmasına yardımcı olur ve PSR-4 standardını izleyen otomatik yükleyiciler için kullanımı çok daha kolay hale getirir. PHP, ad alanı ayırıcısı olarak ters eğik çizgiyi kullanır. İlginç gerçek: RFC'de hangi ad alanı ayırıcısının kullanılacağına karar vermek için bir ifade kullanma seçeneği dikkate alındı. // projem/veritabanı/bağlantı.phpİstediğiniz kadar iç içe ad alanı kullanabilirsiniz. İç içe geçmiş kod bloklarıyla alt ad alanının tanımlanması desteklenmez. Aşağıdaki örnek önemli bir hata döndürecektir: "Ad alanı bildirimleri iç içe olamaz." Aşağıdaki örnek önemli bir hata döndürecektir: "Önemli hata: Sınıf "MyProject\Database\MyProject\FileAccess\Input" bulunamadı" çünkü MyProject\FileAccess\Input, içinde bulunduğunuz ad alanıyla alakalı değil. Hiyerarşinin daha yüksek seviyesindeki bir işleve, sınıfa veya sabite erişmek istiyorsanız, o zaman tam adı kullanmanız gerekir; göreceli değil, mutlak bir yol. Çağrı ters eğik çizgiyle başlamalıdır. Bu, PHP'ye bu çağrının geçerli konumunuza göre erişim yerine küresel alandan yapılması gerektiğini bilmesini sağlar. PHP'nin dahili işlevleri için tam adı kullanmak zorunda değiliz. İşlevler ve sabitler için nitelenmemiş adlar, geçerli ad alanında tanımlanmadıkları takdirde, genel ad alanında tanımlanacaktır. Bunu bilerek, artık orijinal işlevi (veya sabiti) çağırırken dahili PHP işlevlerini aşırı yükleyebiliriz. ";
}
Bu sabit, bir ad alanını öğrenmeye başladığınızda oldukça faydalıdır; aynı zamanda hata ayıklama için de çok faydalıdır. Bir dize olduğundan yukarıda tartışılan dinamik kod çağrılarıyla birlikte kullanılabilir. İçe aktarmalar ad alanlarının çok kullanışlı ve temel bir yönüdür. Bu size, kitaplıklar gibi harici paketleri ad çakışmaları konusunda endişelenmeden kullanma olanağı sağlar. İçe aktarma, use anahtar sözcüğü kullanılarak yapılır. İsterseniz as anahtar sözcüğünü kullanarak özel bir takma ad belirleyebilirsiniz. Olarak kullan Bir alternatif, farklı bir ada sahip bir takma ad atamaktır. Ayrıca Exception gibi global sınıfları da içe aktarabilirsiniz. İçe aktarırken mutlak adını yazmanıza gerek yoktur. Bir ad alanındaki adlar için başta ters eğik çizginin gerekli olmadığını ve içe aktarılan adların mutlak olması ve geçerli ad alanına göre ayrıştırılmaması gerektiğinden orada bulunması önerilmez. Dinamik ad alanı çağrısı desteği olmasına rağmen dinamik içe aktarma desteklenmez. Dipnot: Bu bölümde ad alanlarının kullanımı ve bildirimi açıklanmaktadır. RDF, XML-Veri, Belge İçeriği Açıklaması (DCD), Nesneye Dayalı XML için Şema (SOX), Belge Tanımlama İşaretleme Dili (DDML, eski adıyla XSchema)'nin temel özellikleri verilmiştir. Daha önce DTD tanımlarının bazı dezavantajlarını açıklamıştık, bunlar birbiriyle bağlantılıdır: Bu bölümde aşağıdaki iki kavram ele alınmaktadır: ad alanı ve XML şemaları. Ad alanları, XML geliştiricilerinin karmaşık bir sorunu küçük parçalara ayırmasına ve sorunu tam olarak açıklamak için birden fazla kelime dağarcığını tek bir belgede birleştirmesine olanak tanır. Sözlük tasarımcıları şemaları kullanarak DTD'lerde mümkün olandan daha kesin tanımlar oluşturur ve bunu XML sözdizimini kullanarak yapar. Bu iki araç, XML kullanırken ortaya çıkan karmaşık sorunların çözülmesine yardımcı olur. Ad alanları ve şemalar, XML tasarımcılarının ve programcılarının şunları yapmasına olanak tanır: Bir sözlük tasarlarken küresel bir sorunu birkaç bileşen parçasına ayırmak mantıklı olabilir. Bu, büyük bir sorunu birden fazla kelime dağarcığına ayırmanın yollarını gerektirir. Ancak çözülmesi gereken asıl sorun, ayrı DTD'leri tek bir belgenin gövdesinde birleştirmektir. Bu sorun, örneğin, büyük olasılıkla zaten bir dizi DTD tanımının bulunduğu ve bunların kullanımının işi büyük ölçüde kolaylaştırabileceği bir şirket için çalışıyorsanız da ortaya çıkabilir, çünkü sorunu başkalarının anladığı gibi tanımlıyorlar. DTD tanımlarını yeniden kullanmak da sıklıkla faydalıdır; Daha önce oluşturulmuş DTD tanımlarından ortak yapıların kullanılması. Harici bir iş ortağının yazılımıyla iletişim kurması gereken bir uygulama geliştiriyorsanız, mevcut kavramları yeniden kullanmaktan başka çok az seçeneğiniz vardır. DTD'nin mevcut tanımları anlaşılabilmesi için konuşulması gereken ortak bir dil oluşturmaktadır. Bir kavram zaten mevcutsa, o kavramın terimleriyle anlaşılmaya çalışılmalıdır. Diğer geliştiricilerin DTD'lerinden sizin için yararlı olan tanımları kullandığınızda veya karmaşık bir sorunu açıklayan bir belge oluşturmak için bölümlere ayrılmış DTD'leri birleştirdiğinizde, belgeleriniz aynı adlara sahip öğeler kullanıyorsa, aşağıdaki sorunlarla karşılaşma riskiyle karşı karşıya kalırsınız: belirsizlik ve isim çakışmaları. Birden çok DTD'den ad örnekleri kullanıldığında sorun daha da kötüleşir. DTD tanımının hangi unsuru ifade ettiğini bilemediğimiz bu durumda, belgelerin iyi biçimlendirilmesi sorununa belirsizlik denir. Ayrıca, belgedeki adlar gerektiriyorsa geçerlilik kontrolleri, uygulamamızı çok kafa karıştırıcı hale getirebiliriz. Bu soruna ad çakışması denir. Ad alanları kullanıcıya çok önemli iki şekilde yardımcı olabilir. Onların yardımıyla şunları yapabilirsiniz: Ad alanı, XML belgelerinde öğelerin veya niteliklerin adları olarak kullanılabilecek belirli değerlerin veya özelliklerin bir koleksiyonudur. XML'deki ad alanları, Tekdüzen Kaynak Tanımlayıcısı (URI) tarafından tanımlanır (sunucunuzdaki DTD adresini URI olarak kullanabilirsiniz). Her ad alanının benzersiz olmasını sağlar. Dolayısıyla, farklı kaynaklardan gelen öğeleri birleştiren bir belgede ad alanlarını etkili bir şekilde kullanmak için şunları tanımlamamız gerekir: Farklı işaretleme dillerinde - XML uygulamalarında - aynı etiket adları ve nitelikleri bulunabildiğinden, tamamen farklı anlamlara sahip olduğundan, bunları bir şekilde ayırt edebilmek gerekir. Bunu yapmak için, etiketlerin ve niteliklerin adlarına, adından iki nokta üst üste ile ayrılan kısa bir önek verilir. Ad öneki, ad alanını tanımlayan bir tanımlayıcıyla ilişkilendirilir. Önekleri aynı tanımlayıcıyla ilişkilendirilen tüm etiket ve nitelik adları, adların benzersiz olması gereken tek bir ad alanı oluşturur. Herkesin bir ad alanı bildirimini gördüğümüzde tanıyabilmesini istediğimizden, ona özel bir sözcük ayırdık. Ad alanları önerisine göre sözcük xmlns'dir. Özniteliğin değeri, kullanılacak ad alanını belirten bir URI'dir. Bu genellikle DTD tanımı URL'sidir, ancak her zaman bu şekilde olması gerekmez. Ad alanı öneki ve tanımlayıcı xmlns özniteliği tarafından aşağıdaki şekilde tanımlanır: Gördüğünüz gibi ntb öneki yeni tanımlandı ancak ntb: notebook adında zaten kullanılabiliyor. Gelecekte, http://some.firm.com/2003/ntbml ad alanına atamak istediğimiz etiketlerin ve niteliklerin adlarına ntb ön eki eklenecektir, örneğin: Ayrıca bir etikette birden fazla ad alanı bulunabilir. Aşağıda birden çok ad alanının karıştırılmasına ilişkin bir örnek verilmiştir: Book öğesi, katalog ad alanından gelir ve ISBN özelliği, order öğesinden gelir. Örneğin bir önekle birlikte ad genişletilmiş, nitelikli veya nitelikli bir ad (OName. Nitelikli Ad) olarak adlandırılır. İsmin iki nokta üst üsteden sonra yazılan kısmına ismin mahalli kısmı denir. Web kaynağı adlarının isimlendirilmesi kafa karıştırıcı olabilir. Tekdüzen Kaynak Bulucu ( Tekdüzen Kaynak Bulucu, URL) erişim protokolü ve ağ konumu açısından bir kaynağı belirtir. Tekdüzen Kaynak Tanımlayıcı ( Tekdüzen Kaynak Tanımlayıcı, URI) bazı kaynaklar için benzersiz bir addır. Bir URI'ye, bir ad alanını tanımlayan benzersiz bir karakter dizisi olarak bakın. SGML ve XML kurallarına göre, adlarda iki nokta üst üste sıradan bir karakter olarak kullanılabilir, bu nedenle öneki olan bir ad yalnızca bir numaradır; ad alanını "bilmeyen", belgeyi ayrıştıran, ele alan herhangi bir program; Nitelikli isim sıradan bir isimdir. Özellikle şu şekildedir: belge türü bildirimi(Belge Türü Bildirimi) ad önekleri atlanamaz. Xmlns niteliği yalnızca kök öğede değil, herhangi bir XML öğesinde görünebilir. Tanımladığı önek, xmlns niteliğinin yazıldığı öğede ve içine yuvalanan tüm öğelerde kullanılabilir. Ayrıca bir elemanda birden fazla isim alanı tanımlanabilir. Yuvalanmış öğelerde, önek farklı bir tanımlayıcıyla ilişkilendirilerek ad alanı geçersiz kılınabilir. Ad alanı kullanan bir belgede önek olmadan bir etiket adının görünmesi, adın varsayılan ad alanına ait olduğu anlamına gelir. İyi tasarlanmış bir belge, tüm öğeleri için ad alanlarını kullanmalıdır. Her durumda xml karakterleriyle başlayan önekler XML dilinin kendisine ayrılmıştır. Xmlns öneki, başka bir tanımlı öneki kendi ad alanı tanımlayıcısıyla ilişkilendirmek için kullanılır. Xmlns önekinin tanımlanmasına gerek yoktur; "XML'deki Ad Alanları" önerisiyle tanıtılır ve burada ad alanı tanımlayıcısıyla ilişkilendirilir. http://www.w3.ori/2000 /xmlns/. Başka bir önek olan xml, aynı öneride tanımlayıcıyla ilişkilendirilir http://www.w3.org/XML/1998/namespace. Ayrıca XML belgesinde tanımlanmasına da gerek yoktur. Bu tanımlayıcılarla başka hiçbir önek ilişkilendirilemez. Boşluk karakterlerini olduğu gibi tutmaya yönelik talimatları koruyun. Bu, program kodları gibi bazı metinler için önemlidir. Varsayılan değer, boşlukları işleyicinin takdirine bırakır. Ad alanı bildirimlerinin, tıpkı programlama dillerindeki değişken bildirimleri gibi bir kapsamı vardır. Bu önemlidir çünkü ad alanları her zaman XML belgesinin başında bildirilmez; bazen sonraki bölümlerde bildirilir. Bir ad alanı bildirimi, burada açıkça tanımlanmamış olsa bile, içinde göründüğü öğenin yanı sıra o öğenin alt öğelerine de uygulanır. Bir ad, yalnızca bildiriminin kapsamı dahilinde kullanıldığında bir ad alanına gönderme yapabilir. Ancak, aksi takdirde diğer ad alanlarını devralacak öğeler üzerinde ad alanı kapsamlarını da karıştırmamız gerekecektir. Bu bağlamda kapsam bildirmenin iki yolu tanımlanmıştır: varsayılan ve nitelikli. Tahmin edebileceğiniz gibi, bir belgedeki her adın önüne eklemek zorunda kalmak, hızla sıkıcı hale gelir. Aslında ad kapsamı kavramını tanıtarak çok sayıda öneki belgemize karıştırabiliriz. Varsayılan bir ad alanı tanımlarsak, bildirimi kapsamındaki tüm niteliksiz adlara sahip olduğu varsayılır. Bu nedenle, kök öğede bildirilen varsayılan ad alanı, belgenin tamamı için varsayılan olarak kabul edilir ve yalnızca belge içinde bildirilen daha spesifik bir ad alanı tarafından geçersiz kılınabilir. Bir ad alanını bir kapsamın varsayılan ad alanı yapmak için önek bildirimini atlamanız yeterlidir. Bir önek bildirilir ve daha sonra bir adla birlikte kullanılırsa, ad alanının açıkça kurulduğu söylenir. Bir ad alanına nitelenmemiş bir ad atamak için, nitelenmemiş adı içeren (ön ek olmadan) bir varsayılan alan bildirmeniz gerekir. Ad alanlarınızı açıkça ayırabiliyorsanız yukarıdaki yöntem işe yarar. Ancak bazen bir belgeye harici ad alanlarından tek tek adların dahil edilmesi gerekebilir. Kapsamın tamamı için ad alanlarını bildirmek yerine, nitelenmiş adlar kullanabilirsiniz. İhtiyacınız olan ad alanlarını belgenin başında belirtin ve ardından bunları kullanım noktasında nitelendirin. |
Okumak: |
---|
Popüler:
Yeni
- Bir dizüstü bilgisayarda kamera nasıl açılır
- VKontakte'de neden müzik çalmıyor?
- Veri kaybı olmadan D sürücüsü pahasına C sürücüsünün boyutu nasıl artırılır
- Anakarttaki arızaların nedenleri Anakarttaki yonga seti yanmışsa
- Sohbetin orijinal adı
- Excel'de stilleri kullanma Kendi yeni stilinizi nasıl yaratabilirsiniz?
- Kurulum sırasında hangi hatalar ortaya çıkıyor?
- Bir kişinin toplumdaki sosyal statüsü
- Hataların tam yorumlanması
- Doğrudan "canlı" Beeline operatörü nasıl aranır: ücretsiz telefon numaraları