URI Kütüphanesi


    × Bunları biliyor muydunuz?
"ZN Framework'te Masterpage kütüphanesi ile çok basit bir şekilde web iskeleti oluşturabilirsiniz."


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 4 -1

http[s]://

yourdomain.com/

zeroneed.php/

[project-name/]

[lang/]

[controller/]

[function/]

[param1/]

[param2/]

...

 

 

# Kurulum


ZN dağıtımları için kurulum gerekmez.

↓ composer require znframework/package-request

 

 

# Yöntemler


URI::get(mixed $get = 1, mixed $index = 1, bool $while = false) : string
URI::getNameCount(string $get) : int
URI::getNameAll(string $get) : string
URI::getByIndex(int $get = 1, int $index = 1) : string
URI::getByName(string $get, string $index = NULL) : string
URI::segmentarray() : array
URI::totalSegments() : int
URI::segmentCount() : int
URI::segment(int $seg = 1) : string
URI::currentSegment() : string
URI::current(bool $isPath = true) : string
URI::base(string $uri = '', int $index = 0) : string
URI::prev(bool $isPath = true) : string
URI::manipulation(array $data, string $fix = 'none') : string
URI::buildQuery(array $data, string $separator = '/', string $fix = 'none') : string
URI::__call(string $segment, array $parameters) : string
URI::data(array | string $data) : this

 

 

# 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/12
echo 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/content
echo 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/content
echo 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/page
echo 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/page
echo 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ı

URL: localhost/urunler/detay/sayfa/kapsam/icerik/1
echo URI::segment(1);
urunler
echo URI::segment(2)
detay
echo URI::segment(-1);
12

 

 

# Segmentarray


URI üzerindeki segmentleri dizi olarak döndürür.

return array

Kullanımı

URL: localhost/urunler/detay/sayfa/kapsam/icerik/12
output(URI::segmentarray()); 
[
    'urunler',
    'detay',
    'sayfa',
    'kapsam',
    'icerik',
    '12'
]   

 

 

# TotalSegments


URI üzerindeki segmentlerin toplam sayısını verir.

return int

Kullanımı

URL: localhost/products/detail/page/scope/content/12
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/test
echo URI::current();
home/test

Parametrenin 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/test
echo 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
URL: localhost/user/list/order/asc/column/id/page/10

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.

URL: localhost/product/computer/price/100

İsme Göre Yakalama

echo URI::product();
computer
echo URI::price();
100
echo 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=1
echo 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
Not: Tüm URI yöntemleri ile beraber kullanılabilir.