URL Yapısı


    × Bunları biliyor muydunuz?
"URL::base() ve URL::site() kullanımları farklıdır. Özellikle varlık dosyalarına yol verilirken URL::base(), [a] etiketi ile köprü oluştururken URL::site() kullanılmalıdır."


ZN Framework ile geliştirilen bir projede istek aşağıdaki gibi örnek bir web adresine yapılır. ZN ile kullanılan URL yapısını anlamak ZN Framework kullanımını anlamak açısından oldukça önemlidir.

URL
Temel Bölüm Göreceli Bölüm Rotalanabilir Bölüm
http[s]:// yourdomain.com/ [project-name/] [lang/] [controller/] [function/] [param1/param2 ...]

 Yukarıdaki URL bölümleri aşağıda aşama aşama incelenmiştir.

 

 

# Bölüm Başlıkları


# HTTP/S

# HTTPS Dönüşümü
# Port Değiştirme
# HTTP'yi Yakalama

# Alan Adı / Domain Name

# HTTP Değeri ile Birlikte Yakalama

# Proje Adı / Project Name

# Ön Tanımlı Proje Dizini
# Takma İsim Kullanımı
# Proje Dizinini Yakalama

# Dil / Lang

# Dil Değerinin Değişimi
# Aktif Dili Yakalama

# Kontrolcü / Controller

# Ön Tanımlı Kontrolcü
# Kontrolcü Adını Yakalama

# Yöntem / Function

# Ön Tanımlı Yöntem
# Yöntem Adını Yakalama

# Parametreler / Parameters

# Parametreleri Yakalama

 

 

# HTTP/S


ZN Framework'te site içi bir URL oluşturmak için URL::site() yöntemi kullanılır. Bu yöntem ile oluşturulan linklerin http:// olan ön eki sitede SSL sertifikasının aktif edilmesi durumunda https:// olarak değişir. Bu dönüşüm otomatik olarak yapılır. Bunun için ekstra bir ayar yapılmasına gerek yoktur. Bu nedenle sitede kullanılan tüm linklerin URL::site() ile yapılması gereklidir. Link bir .css veya .js gibi bir yerel dosyayı gösterecekse URL::site() yerine URL::base() kullanılmalıdır.

echo URL::site('product/list');
http://localhost/eip/example/product/list
HTTPS Dönüşümü

Sitenize güvenlik sertifikası kurduğunuzda linkler otomatik olarak http den https'ye dönüşür.

echo URL::site('product/list');
https://localhost/eip/example/product/list
Port Değiştirme 

IIS sunucularda HTTPS için 443 dışında başka bir portun kullanılması durumunda linklerin otomatik olarak https ye dönüşebilmesi için aşağıdaki düzenleme yapılmalıdır.

Dosya: zeroneed.php
# ZN::run() yönteminden önce
$_SERVER['SERVER_PORT'] = 443;

Şeklinde manipüle edilerek SSL portunun doğru eşleşmesi sağlanmalıdır.

HTTP'yi Yakalama

URL'nin bu değerini elde etmek için aşağıdaki yöntemi kullanabilirsiniz.

echo Request::scheme();
http

 

 

# Alan Adı / Domain Name


Bu değeri elde etmek için Http::host() yönteminden yararlanabilirsiniz.

echo Http::host();
localhost
HTTP Değeri ile Birlikte Yakalama

http://localhost değerini yakalamak için aşağıdaki yöntemden yararlanabilirsiniz.

echo URL::host();
http://localhost

 

 

# Proje Adı / Project Name


Projects/ dizini içerisinde yer alan proje dizinlerinden çalıştırılacak olanın adını içeren bölümdür. Çalıştırılacak dizin ön tanımlı (Frontend/) dizin ise yazılmaz. Bunun dışında yer alan dizinleri çalıştırmak için dizin adı yazılır. Şayet Frontend/ dizini ön tanımlı olduğu için bu dizinin çalıştırılması için doğrudan host adının yazılması yeterlidir.

Çalıştır: localhost/

Ancak farklı bir proje dizinin çalıştırılmak istenmesi durumunda URL'ye belirtilir.

Çalıştır: localhost/Backend/

Yukarıdaki istek Projects/Backend/ dizini çalıştırır.

Ön Tanımlı Proje Dizini

Ön tanımlı olarak çalıştırılan proje dizini Projects/Frontend/ dizinidir. Ön tanımlı açılış proje dizini değiştirmek için aşağıdaki yapılandırma dosyasından gerekli ayarı yapabilirsiniz.

Dosya: Settings/Projects.php -> directory:default
'default' => 'Frontend'
Takma İsim Kullanımı

Proje dizinlerinize erişmek için bu dizin isimlerini temsil edecek takma isimler verebilirsiniz. Bu ayarı düzenlemek için aşağıdaki yapılandırma dosyasını kullanın.

Dosya: Settings/Projects.php -> directory:others
'panel' => 'Backend'

Yukarıdaki düzenlemeden sonra aşağıdaki URL üzerinden Backend/ dizinini çalıştırabilirsiniz.

Çalıştır: localhost/panel/

Bu bölümün ne için kullanıldığıyla ilgili detaylı bilgiye Çoklu Proje Geliştirme bölümünden ulaşabilirsiniz.

Proje Dizinini Yakalama

URL üzerinde çalıştırılmakta olan proje dizini adının gerekli olması durumunda CURRENT_PROJECT sabiti ile ilgili proje adı elde edilir.

echo CURRENT_PROJECT;
Frontend

 

 

# Dil / Lang


Bu bölüm ön tanımlı olarak kapalıdır. Sitenin seçili dil değerini gösterir. Seçili dil kısaltmasının URL üzerinde görüntülenebilmesi için yapılandırma dosyasından aktif hale getirilmelidir. Bu işlemin yapılması durumunda URL::site() yöntemi ile oluşturulan linkler de bu dil ekini alır. Dile ekinin URL üzerinde görüntülenebilir olması için aşağıda yolu belirtilen yapılandırma dosyasından aktif hale getirilmelidir.

Dosya: Projects/Frontend/Config/Services.php -> uri:lang
'lang' => true

Yukarıdaki düzenlemeden sonra URL::site() yöntemi aşağıdaki çıktıyı üretir.

echo URL::site('product/list');
http://localhost/en/product/list 
Dil Değerinin Değişimi

Bu değeri değiştirmek için Lang::set() yöntemiden yararlanılır.

Lang::set('tr');

echo URL::site('product/list');
http://localhost/tr/product/list 

Bu değişiklik aynı zamanda URL üzerinden kullanıcıların bu değeri değiştirip çalıştırması ile de mümkündür.

Aktif Dili Yakalama

O an seçili olan dil kısalmasını yakalamak için Lang::get() yöntemiden yararlanılır.

echo Lang::get();
tr

Bu bölüm ile ilgili anlatım Dosya Dil Kütüphanesi bağlantısında yapılmıştır.

 

 

# Kontrolcü / Controller


Bu bölüm ZN Framework'te Controllers/ dizininde yer alan kontrolcülerden hangisinin çalıştırılacağını belirler. Hiç bir kontrolcü adı belirtilmeden yapılan isteklerde ön tanımlı olarak çalışan kontrolcü Home kontrolcüsüdür. Bu bölüm ile ilgili anlatım İsteklerin Kontrol Edilmesi bağlantısında yapılmıştır.

Ön Tanımlı Kontrolcü

Ön tanımlı kontrolcü bilgisini değiştirmek için aşağıdaki yapılandırma dosyasını kullanabilirsiniz.

Dosya: Project/Frontend/Config/Routing.php
'openController' => 'Home'
Kontrolcü Adını Yakalama

Kontrolcü adını yakalamak için CURRENT_CONTROLLER sabiti kullanılmalıdır. Farklı yöntemlerle de bu bölüme erişebilir olsa da bu sabit rotalardan etkilenmediği için gerçek kontrolcü adını verir.

echo CURRENT_CONTROLLER;
product
Uyarı: CURRENT_CONTROLLER kontrolcünün uzantısız dosya adını verir. Dolayısı ile kontrolcünün dosya isminden etkilenir.

 

 

# Yöntem / Function


Bu bölüm bir önceki bölümle ifade edilen kontrolcüye ait fonksiyon bilgisini ifade etmektedir. Hiç bir yöntem adı belirtilmeden yapılan isteklerde ilgili kontrolcünün main yöntemi devreye girer. Yine bu bölümün kullanımı ile ilgili anlatım İsteklerin Kontrol Edilmesi bağlantısında yapılmıştır.

Ön Tanımlı Yöntem

Ön tanımlı kontrolcü yöntemi bilgisini değiştirmek için aşağıdaki yapılandırma dosyasını kullanabilirsiniz.

Dosya: Project/Frontend/Config/Routing.php
'openFunction' => 'main'
Yöntem Adını Yakalama

Yöntem adını yakalamak için CURRENT_CFUNCTION sabiti kullanılmalıdır. Bu sabit o anda çalıştırılmakta olan gerçek fonksiyon adını verir. Bu sabit rotalardan etkilenmez.

echo CURRENT_CFUNCTION;
list

 

 

# Parametreler / Parameters


Çalıştırılan kontrolcünün yöntemine veri göndermek için kullanılan bölümdür. Bu ve bundan sonraki bölümlerin tümü parametre gönderimi için kullanılır.

Parametreleri Yakalama

Parametreleri yakalamak için CURRENT_CPARAMETERS sabiti kullanılabilir. Bu sabit dışında ilgili yöntemin parametrelerine tanımlayacağınız sıralı değişkenlerle de parametreleri yakalayabilirsiniz.

URL: localhost/product/list/20/example/value
output( CURRENT_CPARAMETERS );
0 => string '20' ( length = 4 )
1 => string 'example' ( length = 9 )
2 => string 'value' ( length = 7 )