Terimler Sözlüğü
AJAX
Asynchronous JavaScript and XML – istemci ile sunucu arasında, her istekte sayfanın tamamını yeniden yüklemeye gerek kalmadan HTTP protokolü üzerinden bilgi alışverişi sağlayan teknoloji. Adı, verinin yalnızca XML biçiminde gönderildiğini düşündürse de, yaygın olarak JSON biçimi de kullanılır.
Presenter Eylemi
Presenter'ın, tek bir eylemi gerçekleştiren mantıksal parçası. Örneğin bir ürün sayfasını göstermek, kullanıcının oturumunu kapatmak vb. Tek bir presenter birden çok eyleme sahip olabilir.
BOM
byte order mark, bir dosyadaki, kodlamada bayt sırasının göstergesi olarak kullanılan özel ilk karakterdir. Bazı düzenleyiciler onu dosyalara ekler. Pratikte görünmezdir, ama PHP'den çıktı ve başlık gönderilmesinde sorunlara yol açar. Toplu kaldırma için Code Checker kullanabilirsiniz.
Controller
Kullanıcı isteklerini işleyen ve bunlara dayanarak uygun uygulama mantığını (yani Model) çağıran, ardından veriyi render etmesi için View katmanından istekte bulunan denetleyici. Nette Framework'te controller'ların karşılığı presenter'lardır.
Cross-Site Scripting (XSS)
Cross-Site Scripting, kaçırılmamış çıktılardan yararlanarak web sitelerini bozma yöntemidir. Saldırgan böylece sayfaya kendi kodunu enjekte edebilir, sayfayı değiştirebilir, hatta ziyaretçiler hakkında hassas veri elde edebilir. XSS'e karşı koruma, tüm çıktı dizelerinin tutarlı ve doğru biçimde kaçırılmasından geçer.
Nette Framework, Cross-Site Scripting riskini kalıcı olarak ortadan kaldıran devrim niteliğindeki Bağlama Duyarlı Kaçış teknolojisini sunar. Tüm çıktıları otomatik kaçırır, dolayısıyla geliştirici hiçbir şeyi unutamaz.
Cross-Site Request Forgery (CSRF)
Cross-Site Request Forgery saldırısında saldırgan, kurbanı; kurbanın tarayıcısında, kurbanın giriş yapmış olduğu bir sunucuya sinsice istek çalıştıran bir sayfaya çeker. Sunucu, isteğin kurban tarafından isteyerek yapıldığına inanır. Böylece kurbanın kimliği altında, onun haberi olmadan bir eylem gerçekleştirir. Bu; veri değiştirmek ya da silmek, mesaj göndermek vb. olabilir.
Nette Framework, presenter'lardaki formları ve sinyalleri bu tür saldırılara karşı, başka bir alan adından gönderilmelerini ya da tetiklenmelerini engelleyerek otomatik korur.
Cross-Origin Resource Sharing (CORS)
CORS, bir web sayfasının JavaScript isteklerini, sayfanın yüklendiği alan adından farklı bir alan adına yapmasına izin veren bir güvenlik mekanizmasıdır. CORS olmadan tarayıcılar, güvenlik nedeniyle böyle istekleri engeller.
Örneğin web siteniz https://myapp.com adresinde çalışıyor ve JavaScript ile (AJAX, Fetch API)
https://api.example.com adresinden veri almaya çalışıyorsa, tarayıcı API sunucusunun bu çapraz kaynak
isteğine izin verip vermediğini denetler. API sunucusu izin vermek için
Access-Control-Allow-Origin: https://myapp.com gibi özel HTTP başlıklarıyla yanıt vermelidir.
Dependency Injection
Dependency Injection (DI), nesnelerin oluşturulmasını bağımlılıklarından nasıl ayıracağınızı belirleyen bir tasarım desenidir. Yani bir sınıf, bağımlılıklarını oluşturmaktan ya da başlatmaktan sorumlu değildir; bu bağımlılıklar ona dışarıdaki kod tarafından sağlanır (bu bir DI container da olabilir). Avantajı; bağımlılıklar kolayca değiştirilebilir ve kodun diğer parçalarından yalıtılmış olduğundan, kodun daha esnek, daha anlaşılır ve uygulamanın daha kolay sınanabilir olmasıdır. Daha fazlası Dependency Injection nedir? bölümünde.
Dependency Injection Container
Dependency Injection container (DI container ya da IoC container olarak da bilinir), bir uygulama içindeki bağımlılıkların (yani servislerin) oluşturulmasını ve yönetimini üstlenen bir araçtır. Container genellikle, hangi sınıfların hangilerine bağımlı olduğunu, hangi somut bağımlılık gerçekleştirimlerinin kullanılacağını ve bu bağımlılıkların nasıl oluşturulacağını tanımlayan bir yapılandırmaya sahiptir. Sonra container bu nesneleri oluşturur ve onlara gereksinim duyan sınıflara sağlar. Daha fazlası DI container nedir? bölümünde.
Kaçış
Kaçış (escaping), belirli bir bağlamda özel anlamı olan karakterlerin, karşılık gelen başka dizilere dönüştürülmesidir. Örnek: Tırnak işaretleriyle sınırlanmış bir dizenin içine tırnak işareti yazmak isteriz. Tırnak işaretinin dize bağlamında özel bir anlamı olduğundan ve onu öylece yazmak dizenin sonu olarak yorumlanacağından, karşılık gelen başka bir diziyle yazılması gerekir. Hangi dizi olacağını bağlamın kuralları belirler.
Filtre
Şablonlarda filtre, genellikle veriyi son biçimine dönüştürmeye ya da yeniden biçimlendirmeye yardımcı olan bir fonksiyonu anlatır. Şablonlar birkaç standart filtre sunar.
Geçersiz Kılma
Bir snippet'e yeniden çizilmesi gerektiğinin bildirilmesi. Başka bir bağlamda, önbellek içeriğinin silinmesi anlamına da gelir.
JSON
JavaScript sözdizimine dayanan (onun bir alt kümesidir) veri alışverişi biçimi. Kesin belirtimini www.json.org adresinde bulabilirsiniz.
Bileşen
Uygulamanın yeniden kullanılabilir bir parçası. Bileşen yazma bölümünde anlatıldığı gibi sayfanın görsel bir parçası olabilir; ya da bileşen terimiyle Component sınıfı da kastedilebilir (böyle bir bileşenin görsel olması gerekmez).
Denetim Karakterleri
Denetim karakterleri, metinde bulunabilen ve sorunlara yol açabilen görünmez karakterlerdir. Onları dosyalardan toplu kaldırmak için Code Checker, bir değişkenden kaldırmak için ise Strings::normalize() fonksiyonunu kullanabilirsiniz.
Olaylar
Olay, bir nesne içinde beklenen bir durumdur. Gerçekleştiğinde, olaya tepki veren callback'ler olan işleyiciler çağrılır (örnek). Olay örneğin bir formun gönderilmesi, kullanıcının giriş yapması vb. olabilir. Olaylar bu yüzden bir Inversion of Control biçimidir.
Örneğin kullanıcı girişi Nette\Security\User::login() metodunda gerçekleşir. User nesnesinin,
herkesin callback ekleyebileceği bir dizi olan genel $onLoggedIn değişkeni vardır. Kullanıcı giriş
yaptığında login() metodu dizideki tüm callback'leri çağırır. onXyz biçimindeki değişken
adı, Nette'in tamamında kullanılan bir kuraldır.
Latte
En gelişmiş şablon sistemlerinden biri.
Model
Model, uygulamanın tamamının verisi ve özellikle işlevsel çekirdeğidir. Tüm uygulama mantığını içerir (iş mantığı terimi de kullanılır). MVC ya da MVP'deki M'dir. Herhangi bir kullanıcı eylemi (giriş yapmak, sepete ürün eklemek, veritabanındaki bir değeri değiştirmek) bir model eylemini temsil eder.
Model kendi iç durumunu yönetir ve dışarıya sabit bir arayüz sunar. Bu arayüzün fonksiyonlarını çağırarak durumunu sorgulayabilir ya da değiştirebiliriz. Model, View ya da Controller katmanının varlığından habersizdir.
Model-View-Controller
Grafik arayüzlü uygulamalarda, işleme kodunu (Controller) uygulama mantığı kodundan (Model) ve veri gösterme kodundan (View) ayırma gereksiniminden doğan yazılım mimarisi. Bu, uygulamayı daha anlaşılır kılar, ileriki geliştirmeyi kolaylaştırır ve tek tek parçaların ayrı ayrı sınanmasına olanak tanır.
Model-View-Presenter
Model-View-Controller üzerine kurulu mimari.
Modül
Modül, uygulamanın mantıksal bir parçasını temsil eder. Tipik bir düzende, belirli bir işlevsellik alanını ele alan
bir presenter ve şablon grubudur. Modüller Front/, Admin/ ya da Shop/ gibi ayrı dizinlere
yerleştirilir.
Örneğin bir e-mağaza şunlara bölünebilir:
- Ürünlere göz atmak ve satın almak için Frontend (
Shop/) - Sipariş yönetimi için Müşteri bölümü (
Customer/) - Operatörler için Yönetim (
Admin/)
Teknik olarak bunlar sıradan dizinlerdir, ama net yapılandırma sayesinde uygulamanın ölçeklenmesine yardım ederler.
Admin:Product:List presenter'ı böylece fiziksel olarak örneğin app/Presentation/Admin/Product/List/
dizininde bulunur (bkz. presenter
eşlemesi).
Namespace
PHP diline 5.3 sürümünden beri ve başka bazı programlama dillerine de dahil olan ad alanı (namespace), farklı kütüphanelerde aynı adı taşıyan sınıfların ad çakışması olmadan kullanılmasını sağlar. Bkz. PHP belgeleri.
Presenter
Presenter, router tarafından HTTP isteğinden çevrilen isteği alıp bir yanıt üreten nesnedir. Yanıt; bir HTML sayfası, bir görsel, bir XML belgesi, diskteki bir dosya, JSON, bir yönlendirme ya da aklınıza gelen herhangi bir şey olabilir.
Genellikle presenter terimiyle Nette\Application\UI\Presenter sınıfının bir alt sınıfı kastedilir. Gelen isteklere göre karşılık gelen eylemleri çalıştırır ve şablonları render eder.
Router
HTTP isteği / URL ile presenter eylemi arasında çift yönlü bir çevirmen. Çift yönlü olması, bir HTTP isteğinden presenter eyleminin türetilebilmesi ve tersine, bir eylem için karşılık gelen URL'nin üretilebilmesi anlamına gelir. Daha fazlası URL yönlendirme bölümünde.
SameSite çerezi
SameSite çerezleri, sayfanın yüklenmesine neyin yol açtığını anlamak için bir mekanizma sağlar. Üç değer alabilir:
Lax, Strict ve None (sonuncusu HTTPS gerektirir). Sayfa isteği doğrudan web sitesinden
geliyorsa ya da kullanıcı sayfayı adres çubuğuna doğrudan yazarak veya bir yer imine tıklayarak açıyorsa, tarayıcı
sunucuya tüm çerezleri gönderir (yani Lax, Strict ve None bayraklı olanları).
Kullanıcı web sitesine başka bir sitedeki bağlantı üzerinden tıklayarak gelirse, sunucuya Lax ve
None bayraklı çerezler iletilir. İstek başka bir yolla ortaya çıkarsa, örneğin başka bir siteden POST formu
gönderme, bir iframe içinde yükleme, JavaScript kullanma vb., yalnızca None bayraklı çerezler gönderilir.
Servis
Dependency Injection bağlamında servis, DI container tarafından oluşturulup yönetilen bir nesneyi anlatır. Bir servis, örneğin sınama amacıyla ya da uygulamanın davranışını değiştirmek için, onu kullanan kodu değiştirmeye gerek kalmadan kolayca başka bir gerçekleştirimle değiştirilebilir.
Snippet
Snippet, sayfanın bir AJAX isteği sırasında bağımsız olarak yeniden çizilebilen parçası.
View
View, isteğin sonucunu göstermekten sorumlu uygulama katmanıdır. Genellikle bir şablon sistemi kullanır ve belirli bileşenleri ya da modelden elde edilen sonuçları nasıl göstereceğini bilir.