NEON Formatı
NEON insan tarafından okunabilen yapılandırılmış bir veri formatıdır. Nette, yapılandırma dosyaları için kullanılır. Ayrıca ayarlar, dil çevirileri vb. gibi yapılandırılmış veriler için de kullanılır. Sandbox üzerinde deneyin.
NEON, Nette Nesne Notasyonu anlamına gelir. XML veya JSON'dan daha az karmaşık ve hantaldır, ancak benzer yetenekler sağlar. YAML'ye çok benzemektedir. Ana avantajı, NEON'un DI hizmetlerinin yapılandırılmasının çok seksi olması sayesinde sözde varlıklara sahip olmasıdır. Ve girinti için sekmelere izin verir.
NEON, kullanımı basit olacak şekilde sıfırdan inşa edilmiştir.
Entegrasyon
- NetBeans (yerleşik desteği vardır)
- PhpStorm (eklenti)
- Visual Studio Code(Nette Latte + Neon) veya VS Code için Nette)
- Sublime Text 3 (eklenti)
- Sublime Text 2 (eklenti)
- VIM (eklenti)
- Emacs (eklenti)
- Prism.js (entegre dil)
Sözdizimi
NEON'da yazılmış bir dosya genellikle bir dizi veya eşlemeden oluşur.
Eşlemeler
Eşleme bir anahtar-değer çiftleri kümesidir, PHP'de buna ilişkisel dizi denir. Her çift key: value
şeklinde
yazılır, :
'dan sonra bir boşluk bırakılması gerekir. Değer herhangi bir şey olabilir: dize, sayı, boolean,
null, dizi veya başka bir eşleme.
PHP'de aynı yapı şu şekilde yazılacaktır:
Bu gösterime blok gösterimi denir çünkü tüm öğeler ayrı bir satırdadır ve aynı girintiye sahiptir (bu durumda hiçbiri). NEON ayrıca parantez içine alınan, girintinin rol oynamadığı ve her bir öğenin ayırıcısının virgül veya satırsonu olduğu eşleme için satır içi gösterimi de destekler:
Bu, birden fazla satırda yazılanın aynısıdır (girinti önemli değildir):
Alternatif olarak, =
yerine kullanılabilir :
, hem blok hem de satır içi gösterimde
kullanılabilir:
Diziler
Diziler PHP'de dizinlenmiş dizilerdir. Bunlar -
tire işareti ve ardından bir boşluk ile başlayan satırlar
olarak yazılır. Yine, değer herhangi bir şey olabilir: dize, sayı, boolean, null, dizi veya başka bir eşleme.
PHP'de aynı yapı şu şekilde yazılacaktır:
Bu gösterime blok gösterimi denir çünkü tüm öğeler ayrı bir satırdadır ve aynı girintiye sahiptir (bu durumda hiçbiri). NEON ayrıca diziler için parantez içine alınmış satır içi gösterimi de destekler, girinti bir rol oynamaz ve her bir öğenin ayırıcısı virgül veya satırsonudur:
Bu, birden fazla satırda yazılanın aynısıdır (girinti önemli değildir):
Satır içi gösterimde kısa çizgiler kullanılamaz.
Kombinasyon
Eşlemelerin ve dizilerin değerleri başka eşlemeler ve diziler olabilir. Girinti seviyesi önemli bir rol oynar.
Aşağıdaki örnekte, sıra öğelerini belirtmek için kullanılan kısa çizgi pets
tuşundan daha büyük bir
girintiye sahiptir, bu nedenle öğeler ilk satırın değeri haline gelir:
PHP'de aynı yapı şu şekilde yazılacaktır:
Blok ve satır içi gösterimleri birleştirmek mümkündür:
Blok gösterimi artık bir satır içi gösterimin içinde kullanılamaz, bu çalışmaz:
Önceki durumda, elemanları diziler olan bir eşleme yazmıştık. Şimdi de tam tersini deneyelim ve eşlemeleri içeren bir dizi oluşturalım:
Madde işaretlerinin ayrı satırlarda olması gerekli değildir; bu şekilde de yerleştirilebilirler:
Bir sütundaki tuşları boşluk veya sekme kullanarak hizalayıp hizalamayacağınız size bağlıdır.
PHP eşleme ve diziler için aynı yapıyı, yani dizileri kullandığından, her ikisi de birleştirilebilir. Girintileme bu sefer aynıdır:
PHP'de aynı yapı şu şekilde yazılacaktır:
Dizeler
NEON'daki dizeler tek veya çift tırnak içine alınabilir. Ancak görebileceğiniz gibi, tırnak işaretleri olmadan da olabilirler.
Dize karakter içeriyorsa # " ' , : = - [ ] { } ( )
NEON sözdizimi ile karıştırılabileceği için tırnak
içine alınmalıdır. Kaçış kullanmadıkları için tek tırnak kullanmanızı öneririz. Böyle bir dizede bir tırnak
işareti içine almanız gerekiyorsa, iki katına çıkarın:
Çift tırnaklar, ters eğik çizgileri kullanarak özel karakterler yazmak için kaçış dizilerini kullanmanıza olanak
tanır \
. All escape sequences as in the JSON format are supported, plus \_
, bu boşluk bırakmayan bir
boşluktur, yani \u00A0
.
Dizeleri tırnak işareti içine almanız gereken başka durumlar da vardır:
- boşluklarla başlar veya biterler
- sayı, boole veya null gibi görünebilir
- NEON bunları tarih olarak anlayacaktır
Çok Satırlı Dizeler
Çok satırlı bir dize ayrı satırlarda üçlü tırnak işaretiyle başlar ve biter. İlk satırın girintisi tüm satırlar için yok sayılır:
PHP'de aynısını şöyle yazardık:
Kaçış dizileri yalnızca kesme işaretleri yerine çift tırnak içine alınmış dizeler için çalışır:
Sayılar
NEON, bilimsel gösterim olarak adlandırılan şekilde yazılmış sayıları ve ayrıca ikili, sekizli ve onaltılı sayıları anlar:
Nulls
Null NEON'da null
kullanılarak veya bir değer belirtilmeden ifade edilebilir. Baş harfi büyük olan veya tüm
harfleri büyük olan varyantlara da izin verilir.
Booleans
Boolean değerler NEON'da true
/ false
veya yes
/ no
kullanılarak ifade
edilir. Baş harfi büyük veya tamamı büyük harf olan varyantlara da izin verilir.
Tarihler
NEON, verileri ifade etmek için aşağıdaki formatları kullanır ve bunları otomatik olarak DateTimeImmutable
nesnelerine dönüştürür:
Varlıklar
Varlık, bir fonksiyon çağrısına benzeyen bir yapıdır:
PHP'de bir nesne olarak ayrıştırılır Nette\Neon\Entity:
Varlıklar da zincirlenebilir:
PHP'de aşağıdaki gibi ayrıştırılır:
Parantezlerin içinde, eşleme ve diziler için kullanılan satır içi gösterim kuralları geçerlidir, bu nedenle birkaç satıra bölünebilir ve virgül eklemek gerekli değildir:
Yorumlar
Yorumlar #
ile başlar ve sağdaki tüm karakterler yok sayılır:
NEON JSON'a Karşı
JSON, NEON'un bir alt kümesidir. Bu nedenle her JSON NEON olarak ayrıştırılabilir:
Tırnak işaretlerini çıkarırsak ne olur?
Parantez ve virgüllere ne dersiniz?
Mermiler daha okunaklı mı?
Peki ya yorumlar?
NEON sözdizimini buldunuz!