Nette Documentation Preview

syntax
Nette'in Tarihçesi
******************

.[perex]
Nette'nin kökenleri, yazarı David Grudl'un saf PHP artık yeterli olmadığı için uygulama yazmak için uygun bir çerçeve aramaya başladığı 2004 yılına dayanıyor. O dönemde mevcut olan çözümlerin hiçbiri kendisine uygun değildi, bu nedenle daha sonra Nette adını alacak olan yeni bir çerçevenin özelliklerini yavaş yavaş ana hatlarıyla belirlemeye başladı.

O zamanlar Symfony, Laravel veya Ruby on Rails gibi güncel çerçeveler henüz mevcut değildi. Java dünyasında JSF (JavaServer Faces) standarttı ve rakip .NET aleminde ASP.NET Webforms baskın çerçeveydi. Her ikisi de yeniden kullanılabilir kullanıcı arayüzü bileşenleri kullanarak sayfalar oluşturmaya izin veriyordu. David, bunların soyutlama yöntemlerini ve oturumlar ya da geri dönüşler kullanarak vatansız HTTP protokolü üzerinden vatansızlık yaratma girişimlerini kusurlu ve temelden bozuk olarak değerlendirdi. Kullanıcılar ve arama motorları için birçok zorluğa neden oldular. Örneğin, bir bağlantıyı kaydettiğinizde daha sonra altında farklı bir içerik bulmanız sizi şaşırtıyordu.

Yeniden kullanılabilir UI bileşenlerinden sayfalar oluşturma olasılığı, o zamanlar masaüstü uygulamaları oluşturmak için popüler bir araç olan Delphi'den iyi bilen David'i büyüledi. Delphi için açık kaynaklı bileşenlerin bulunduğu pazarları seviyordu. Bu yüzden, durumsuz HTTP ile tam bir uyum içinde çalışacak bir bileşen çerçevesinin nasıl oluşturulacağı sorusunu çözmeye çalıştı. Kullanıcı, SEO ve geliştirici dostu olacak bir konsept arıyordu. Ve böylece Nette doğdu.

.[note]
Nette ismi banyoda tesadüfen, yazarın sadece *llette* görülebilecek şekilde döndürülmüş bir şişe Gillette tıraş jeli görmesiyle ortaya çıktı.

Bunu binlerce saatlik araştırma, düşünme ve yeniden yazma süreci izledi. Brno'nun dışında bir köydeki tozlu bir garajda, geleceğin çerçevesinin ilk ana hatları oluşturuluyordu. Mimarinin temeli, o zamanlar artık unutulmuş olan PHP çerçevesi Mojavi tarafından kullanılan ve daha sonra Ruby on Rails etrafındaki heyecanla popülerleşen MVC modeliydi. İlham kaynaklarından biri de Honza Tichý'nin hiç yayınlanmamış phpBase framework'üydü.

Yaklaşan Nette ile ilgili makaleler yazarın blogunda görünmeye başladı. Bunun bir vaporware olduğu şakası yapıldı. Ancak daha sonra Ekim 2007'de Prag PHP Seminar konferansında David Nette'i kamuoyuna tanıttı. Bu arada, bu konferans bir yıl sonra WebExpo'ya dönüştü ve daha sonra Avrupa'nın en büyük BT konferanslarından biri oldu. O zaman bile Nette, yukarıda bahsedilen bileşen modeli, çift yönlü yönlendirici, sunucular arasında bağlantı kurmanın özel yolu gibi bir dizi orijinal kavramı gururla sundu. Formlar, kimlik doğrulama, önbelleğe alma vs. vardı. Her şey Nette'de bugüne kadar orijinal konseptinde kullanılmaya devam ediyor.

.[note]
Nette *controller* yerine *presenter* kullanıyor çünkü kodda *con* ile başlayan çok fazla kelime varmış (controller, front controller, control, config, container, ...).

2007'nin sonunda David Grudl kodu yayınladı ve Nette 0.7 piyasaya sürüldü. Bunun etrafında hevesli bir programcı topluluğu oluştu ve her ay Posobota etkinliğinde buluşmaya başladılar. Topluluk, büyük PHPStan aracının yazarı Ondrej Mirtes gibi günümüzün birçok aydınını içeriyordu. Nette'in geliştirilmesi ilerledi ve sonraki iki yıl içinde 0.8 ve 0.9 sürümleri yayınlandı ve çerçevenin bugünkü bölümlerinin neredeyse tamamının temelleri atıldı. Ruby on Rails için Hotwire veya Symfony UX Turbo'dan 14 yıl öncesine dayanan AJAX parçacıkları dahil.

Ancak o zamanlar Nette'de çok önemli bir şey eksikti. Dependcy injection container (DIC). Nette bir *service locator* kullanıyordu ve amaç dependecy injection'a geçmekti. Ama böyle bir şey nasıl tasarlanırdı? O sırada DI konusunda hiç deneyimi olmayan David Grudl, yaklaşık altı aydır DI kullanan Vasek Purchart ile öğle yemeğine çıktı. Birlikte konuyu tartıştılar ve David, uygulama tasarımı hakkındaki düşüncelerimizde tamamen devrim yaratan bir kütüphane olan Nette DI üzerinde çalışmaya başladı. DI konteyneri, çerçevenin en başarılı parçalarından biri haline geldi. Ve iki yan ürün ortaya çıkardı: Neon formatı ve Schema kütüphanesi.

.[note]
Bağımlılık enjeksiyonuna geçiş çok zaman aldı ve Nette'in yeni bir sürümü için birkaç yıl bekledik. Bu nedenle, nihayet çıktığında, 2 numaralıydı. Yani Nette sürüm 1 mevcut değil.

Nette modern tarihine 2012 yılında 2.0 sürümü ile başladı. Bu sürüm aynı zamanda, şimdi Explorer olarak adlandırılan son derece kullanışlı bir veritabanı aracı içeren Nette Database'i de beraberinde getirdi. Bu kütüphane ilk olarak David Grudl'un komşusu ve popüler Adminer aracının yazarı Jakub Vrána tarafından programlandı. Daha sonra geliştirilmesi üç yıl boyunca Jan Škrášek tarafından üstlenildi.

2014 yılında Nette 2.1 ve kısa bir süre sonra da Nette 2.2 piyasaya sürüldü. Bu nasıl mümkün oldu? Sürüm 2.2, sürüm 2.1 ile aynıydı, sadece yirmi ayrı pakete bölünmüştü. Composer aracı PHP dünyasını etkisi altına aldı ve kütüphane oluşturma hakkındaki düşüncelerimizi değiştirdi. Nette bir monolit olmaktan çıktı ve daha küçük bağımsız parçalara ayrıldı. Her birinin kendi deposu, sorun izleyicisi ve kendi geliştirme ve sürüm akışı var. Bu şekilde Nette, hiçbir şey değişmemiş olsa bile bir paketin yeni bir sürümünün çıktığı monolitik çerçevelerde yaygın olan saçmalıklardan geçmek zorunda kalmaz. Git depolarının fiilen bölünmesi birkaç haftalık hazırlık ve yüzlerce saatlik makine zamanı gerektirdi.

Nette ayrıca Sitepoint dergisi tarafından düzenlenen en iyi PHP çatısı için küresel ankette inanılmaz bir 3. sırada yer aldı.



{{toc:no}}
{{leftbar: @menu-common}}

Nette'in Tarihçesi

Nette'nin kökenleri, yazarı David Grudl'un saf PHP artık yeterli olmadığı için uygulama yazmak için uygun bir çerçeve aramaya başladığı 2004 yılına dayanıyor. O dönemde mevcut olan çözümlerin hiçbiri kendisine uygun değildi, bu nedenle daha sonra Nette adını alacak olan yeni bir çerçevenin özelliklerini yavaş yavaş ana hatlarıyla belirlemeye başladı.

O zamanlar Symfony, Laravel veya Ruby on Rails gibi güncel çerçeveler henüz mevcut değildi. Java dünyasında JSF (JavaServer Faces) standarttı ve rakip .NET aleminde ASP.NET Webforms baskın çerçeveydi. Her ikisi de yeniden kullanılabilir kullanıcı arayüzü bileşenleri kullanarak sayfalar oluşturmaya izin veriyordu. David, bunların soyutlama yöntemlerini ve oturumlar ya da geri dönüşler kullanarak vatansız HTTP protokolü üzerinden vatansızlık yaratma girişimlerini kusurlu ve temelden bozuk olarak değerlendirdi. Kullanıcılar ve arama motorları için birçok zorluğa neden oldular. Örneğin, bir bağlantıyı kaydettiğinizde daha sonra altında farklı bir içerik bulmanız sizi şaşırtıyordu.

Yeniden kullanılabilir UI bileşenlerinden sayfalar oluşturma olasılığı, o zamanlar masaüstü uygulamaları oluşturmak için popüler bir araç olan Delphi'den iyi bilen David'i büyüledi. Delphi için açık kaynaklı bileşenlerin bulunduğu pazarları seviyordu. Bu yüzden, durumsuz HTTP ile tam bir uyum içinde çalışacak bir bileşen çerçevesinin nasıl oluşturulacağı sorusunu çözmeye çalıştı. Kullanıcı, SEO ve geliştirici dostu olacak bir konsept arıyordu. Ve böylece Nette doğdu.

Nette ismi banyoda tesadüfen, yazarın sadece llette görülebilecek şekilde döndürülmüş bir şişe Gillette tıraş jeli görmesiyle ortaya çıktı.

Bunu binlerce saatlik araştırma, düşünme ve yeniden yazma süreci izledi. Brno'nun dışında bir köydeki tozlu bir garajda, geleceğin çerçevesinin ilk ana hatları oluşturuluyordu. Mimarinin temeli, o zamanlar artık unutulmuş olan PHP çerçevesi Mojavi tarafından kullanılan ve daha sonra Ruby on Rails etrafındaki heyecanla popülerleşen MVC modeliydi. İlham kaynaklarından biri de Honza Tichý'nin hiç yayınlanmamış phpBase framework'üydü.

Yaklaşan Nette ile ilgili makaleler yazarın blogunda görünmeye başladı. Bunun bir vaporware olduğu şakası yapıldı. Ancak daha sonra Ekim 2007'de Prag PHP Seminar konferansında David Nette'i kamuoyuna tanıttı. Bu arada, bu konferans bir yıl sonra WebExpo'ya dönüştü ve daha sonra Avrupa'nın en büyük BT konferanslarından biri oldu. O zaman bile Nette, yukarıda bahsedilen bileşen modeli, çift yönlü yönlendirici, sunucular arasında bağlantı kurmanın özel yolu gibi bir dizi orijinal kavramı gururla sundu. Formlar, kimlik doğrulama, önbelleğe alma vs. vardı. Her şey Nette'de bugüne kadar orijinal konseptinde kullanılmaya devam ediyor.

Nette controller yerine presenter kullanıyor çünkü kodda con ile başlayan çok fazla kelime varmış (controller, front controller, control, config, container, …).

2007'nin sonunda David Grudl kodu yayınladı ve Nette 0.7 piyasaya sürüldü. Bunun etrafında hevesli bir programcı topluluğu oluştu ve her ay Posobota etkinliğinde buluşmaya başladılar. Topluluk, büyük PHPStan aracının yazarı Ondrej Mirtes gibi günümüzün birçok aydınını içeriyordu. Nette'in geliştirilmesi ilerledi ve sonraki iki yıl içinde 0.8 ve 0.9 sürümleri yayınlandı ve çerçevenin bugünkü bölümlerinin neredeyse tamamının temelleri atıldı. Ruby on Rails için Hotwire veya Symfony UX Turbo'dan 14 yıl öncesine dayanan AJAX parçacıkları dahil.

Ancak o zamanlar Nette'de çok önemli bir şey eksikti. Dependcy injection container (DIC). Nette bir service locator kullanıyordu ve amaç dependecy injection'a geçmekti. Ama böyle bir şey nasıl tasarlanırdı? O sırada DI konusunda hiç deneyimi olmayan David Grudl, yaklaşık altı aydır DI kullanan Vasek Purchart ile öğle yemeğine çıktı. Birlikte konuyu tartıştılar ve David, uygulama tasarımı hakkındaki düşüncelerimizde tamamen devrim yaratan bir kütüphane olan Nette DI üzerinde çalışmaya başladı. DI konteyneri, çerçevenin en başarılı parçalarından biri haline geldi. Ve iki yan ürün ortaya çıkardı: Neon formatı ve Schema kütüphanesi.

Bağımlılık enjeksiyonuna geçiş çok zaman aldı ve Nette'in yeni bir sürümü için birkaç yıl bekledik. Bu nedenle, nihayet çıktığında, 2 numaralıydı. Yani Nette sürüm 1 mevcut değil.

Nette modern tarihine 2012 yılında 2.0 sürümü ile başladı. Bu sürüm aynı zamanda, şimdi Explorer olarak adlandırılan son derece kullanışlı bir veritabanı aracı içeren Nette Database'i de beraberinde getirdi. Bu kütüphane ilk olarak David Grudl'un komşusu ve popüler Adminer aracının yazarı Jakub Vrána tarafından programlandı. Daha sonra geliştirilmesi üç yıl boyunca Jan Škrášek tarafından üstlenildi.

2014 yılında Nette 2.1 ve kısa bir süre sonra da Nette 2.2 piyasaya sürüldü. Bu nasıl mümkün oldu? Sürüm 2.2, sürüm 2.1 ile aynıydı, sadece yirmi ayrı pakete bölünmüştü. Composer aracı PHP dünyasını etkisi altına aldı ve kütüphane oluşturma hakkındaki düşüncelerimizi değiştirdi. Nette bir monolit olmaktan çıktı ve daha küçük bağımsız parçalara ayrıldı. Her birinin kendi deposu, sorun izleyicisi ve kendi geliştirme ve sürüm akışı var. Bu şekilde Nette, hiçbir şey değişmemiş olsa bile bir paketin yeni bir sürümünün çıktığı monolitik çerçevelerde yaygın olan saçmalıklardan geçmek zorunda kalmaz. Git depolarının fiilen bölünmesi birkaç haftalık hazırlık ve yüzlerce saatlik makine zamanı gerektirdi.

Nette ayrıca Sitepoint dergisi tarafından düzenlenen en iyi PHP çatısı için küresel ankette inanılmaz bir 3. sırada yer aldı.