URI Kütüphanesi
"Başlangıç kontrolcüsü üzerinden $this nesnesini data olarak göndererek statik olmayan sınıflara ilgili data üzerinden erişebilirsiniz."
Uri'nin bölümlerini (segment) kullanmak için geliştirilmiş bir sınıftır. Bölümler URL'deki kütüphanesi ifade eden ilk uri parametresi ile başlar yani zeroneed.php veya tr gibi dil ibareleri URI'ye eklense bile dikkate alınmazlar.
URL | URI | |||||||||
1 | 2 | 3 | 4 | -1 | ||||||
|
|
|
|
|
[controller/] |
[function/] |
[param1/] |
[param2/] |
... |
# Kurulum
ZN dağıtımları için kurulum gerekmez.
↓ composer require znframework/package-request
# Yöntemler
# Get
URI üzerinde herhangi bir segmenti elde etmek için kullanılan bir yöntemdir özellikle başka sayfalar URI üzerinden veri gönderiminde oldukça başarılıdır.
Uri bölüm adı kullanılarak kendinden sonraki bölüm değerine ulaşmak. Yani ilk bölüm anahtar kelimeyi ifade ederken kendinden sonraki bölüm değeri ifade etmektedir. Bu sayede uri üzerinden anahtar değer çiftleri gönderip kullanabilirsiniz.
mixed $get = 1 | Segment adı veya segment indis numarası. |
mixed $index = 1 | Kaçıncı segmentin alınacağı. |
bool $while = false | Aralık 1. ve 2. parametre arası da çıktıya dahil edilsin mi? |
return string |
Kullanımı
URL: localhost/products/detail/page/scope/content/12echo URI::get('content'); echo URI::get('products');
12
detail
İsme ve Numaraya Göre Bölümler
Bölüm adından sonra başlangıç indeks numarasına göre istenilen bölüm değerine ulaşmak.
echo URI::get('products', 2); echo URI::get('products', 3);
page
scope
İsme Göre Bölüm Sayısı
Bölüm adından sonraki kalan bölüm sayısını öğrenmek.
echo URI::get('products', 'count');
5
İsme Göre Tüm Bölümler
Belirlenen bölümden itibaren diğer tüm bölümlere ulaşmak.
echo URI::get('products', 'all');
detail/page/scope/content/12
İsim Aralıklarına Göre Bölümler
Belirlenen bölümler dahil arasındaki diğer bölümlere ulaşmak. Bunu kullanabilmek için 3. parametrenin true olarak ayarlanması gereklidir.
echo URI::get('products', 'content', true);
products/detail/page/scope/content
İsim ve Numara Aralığına Göre Bölümler
Başlangıç indeks numarasına göre uri bölümlerine ulaşmak. Bunu kullanabilmek için 3. parametrenin true olarak ayarlanması gereklidir.
echo URI::get('products', 3, true);
detail/page/scope
Bölüm Numarasına Göre Bölümler
Bölüm numarasına göre istenilen bölümleri almak.
echo URI::get(1, 2); echo URI::get(2, -1); echo URI::get(2, -2);
products/detail
detail/page/scope/content/12
detail/page/scope/content
# GetNameCount
Belirtilen segmentten sonra kaç segment olduğunu öğrenmek için kullanılır.
string $get | Segment adı. |
return string |
Kullanımı
URL: localhost/categories/category/contentecho URI::getNameCount('categories');
2
# GetNameAll
Belirtilen segmentten sonra kalan bölümleri almak için kullanılır.
string $get | Segment adı. |
return string |
Kullanımı
URL: localhost/categories/category/contentecho URI::getNameAll('categories');
category/content
# GetByIndex
Belirtilen segment indislerine göre aralık almak için kullanılır.
int $get = 1 | Başlangıç segmenti. |
int $index = 1 | Bitiş segmenti. |
return string |
Kullanımlar
URL: localhost/categories/category/pageecho URI::getByIndex(1, 3);
categories/category/page
Negatif Index
echo URI::getByIndex(1, -1);
categories/category/page
# GetByName
Belirtilen segment isimlerine göre aralık almak için kullanılır.
string $get | Başlangıç segmenti. |
string $index = NULL | Bitiş segmenti. Belirtilmezse URI::get('segmentName') gibi çalışır. |
return string |
Kullanımı
URL: localhost/categories/category/pageecho URI::getByName('categories', 'page');
categories/category/page
# Segment
URI üzerinde herhangi bir bölüme erişmek için kullanılır tek parametresi vardır.
int $index = 1 | Segment indisi. |
return string |
Kullanımı
echo URI::segment(1);
echo URI::segment(2);
echo URI::segment(-1);
# Segmentarray
URI üzerindeki segmentleri dizi olarak döndürür.
return array |
Kullanımı
URL: localhost/urunler/detay/sayfa/kapsam/icerik/12output(URI::segmentarray());
[
'urunler',
'detay',
'sayfa',
'kapsam',
'icerik',
'12'
]
# TotalSegments
URI üzerindeki segmentlerin toplam sayısını verir.
return int |
Kullanımı
output(URI::totalSegments());
6
# CurrentSegment
O an ki çalıştırılan sayfanın URI'deki bölüm adını verir.
return string |
Kullanımı
echo URI::currentSegment();
# Current
Bu yöntem currentPath() fonksiyonu ile aynı işlevi gerçekleştirmektedir. Aktif sayfanın URI bilgisini öğrenmek için kullanılır.
bool $isPath = true | Tam yol mu göstersin? |
return string |
Kullanımı
URL: localhost/home/testecho URI::current();
home/testParametrenin false olma durumunda çıktı aşağıda ki gibi olur.
echo URI::current(false);
test
# Prev
Bu yöntem prevPath() fonksiyonu ile aynı işlevi gerçekleştirmektedir. Aktif sayfanın URI bilgisini öğrenmek için kullanılır.
bool $isPath = true | Tam yol mu göstersin? |
return string |
Kullanımı
URL: localhost/home/testecho URI::prev(); # Output: home/test
Parametrenin false olma durumunda çıktı aşağıda ki gibi olur.
echo URI::prev(false); # Output: test
# Base
Sitenin kök URI bilgisini verir.
string $uri = '' | URI. |
return string |
Kullanımı
URL: localhost/develop/echo URI::base(); # Output: develop/ echo URI::base('home/test'); # Output: develop/home/test
# Manipulation
Bu yöntem URI'den gelen bölümleri manipüle etmek için kullanılır. Bunu yaparken URI'dizimini bozmadan manipüle etmek mümkündür.
array $data | URI söz dizimi. |
string $fix = 'none' | Çıktının başında veya sonunda '/' sembolü olsun mu? |
left, right, both | |
return string |
Değer Değişimi
Yukarıdaki örnek url'de yer alan order ve column değerlerini değiştirelim.
echo URI::manipulation(['user', 'order' => 'desc', 'column' => 'name', 'page']);
user/list/order/desc/column/name/page/10
Varsayılan Değer
Bölümlerin değeri dizide belirtilmezse ilgili bölümden sonraki ilk bölüm o bölümün değeri kabul edilir.
echo URI::manipulation(['user', 'limit' => 5, 'page']);
user/list/limit/5/page/10
Ön ve Son Ek Kullanımı
Çıktının başına, sonuna veya her iki tarafına / sembolü ekletebilirsiniz.
echo URI::manipulation(['user', 'limit' => 5, 'page'], 'both');
/user/list/limit/5/page/10/
# BuildQuery
URI oluşturmak için kullanılır.
array $data | URI söz dizimi. |
string $separator = '/' | Ayırıcı. |
string $fix = 'none' | Çıktının başında veya sonunda '/' sembolü olsun mu? |
left, right, both | |
return string |
Kullanımlar
echo URI::buildQuery(['user' => 'list', 'order' => 'asc', 'limit', 'page']);
user/list/order/asc/limit/page
Ayraç Kullanımı
Dizi değerlerini / ile birleştirmek yerine başka bir sembol ile birleştirme yapabilirsiniz.
echo URI::buildQuery(['user' => 'list', 'order' => 'asc', 'limit', 'page'], '-');
user-list-order-asc-limit-page
Ön ve Son Ek Kullanımı
Çıktının başına, sonuna veya her iki tarafına / sembolü ekletebilirsiniz.
echo URI::buildQuery(['user' => 'list', 'order' => 'asc', 'limit', 'page'], '-', 'both');
/user-list-order-asc-limit-page/
# __Call
URI::get() yöntemini kullanılır. Sadece get()
yönteminin 1. parametresi yöntem adı olarak kullanılır. Diğer parametrelerin kullanımı aynıdır.
İsme Göre Yakalama
echo URI::product();
computerecho URI::price();
100echo URI::product(2);
price
Baştan Yakalama
Baştan başlayarak bölüm yakalamak için
sx
kullanılır.echo URI::s1();
product
Sondan Yakalama
Sondan başlayarak bölüm yakalamak için
ex
kullanılır.echo URI::e1();
100
Get Veriyi Atma [8.15.0][2024-08-17]
URI veri?a=1 gibi bir GET veri taşıyorsa ? sembolünden itibaren veri alınmak istenmiyorsa isteğin başına
X
(büyük) eklenir.# URI: product/apple?search=1 echo URI::product();
apple?search=1echo URI::Xproduct();
apple
# Data [6.1.0][2021-01-31]
URI sınıfı bu yöntem sayesinde string veriler üzerinde de kullanılabilecek. Daha önce sadece URI üzerinden gelen veriler üzerinde işlem yapıyordu. Tüm URI yöntemleri ile beraber kullanılabilir.
array | string $data | İşlem yapılacak data. Dizi veya string türde olabilir. |
return string |
Kullanımı
echo URI::data('foo/bar/baz')->segment(1);
foo[$data = array]
echo URI::data(['foo', 'bar', 'baz'])->segment(1);
foo