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.

versiyon: 4.x