کتابخانه URI در کد ایگنایتر - مسیردهی، تغییر و استفاده از URL
کلاس URI
کلاس URI متدهایی را فراهم میکند که به شما در جهت بدست آوردن اطلاعات از رشته URI کمک می کند. اگر شما از مسیریابی URI استفاده می کنید همچنین می توانید اطلاعات در مورد سگمنت های مسیردهی مجدد شده را بدست آورید.
نکته: این کلاس به طور خودکار توسط سیستم مقداردهی می شود و لذا نیازی به انجام دستی آن نیست.
کلاس مورد استفاده در این بخش کلاس class CI_URI می باشد.
متدهای موجود در کلاس
segment($n[, $no_result = NULL])
پارامترها:
ورودی/خروجی | نام پارامتر | نوع | شرح |
ورودی | $n (int) | int | شماره اندیس سگمنت |
ورودی | no_result$ | mixed | در صورت پیدا نشدن سگمنت چه چیزی برگردانده شود. |
خروجی | mixed | مقدار سگمنت یا در صورت پیدا نشدن آن |
به شما اجازه می دهد تا یک سگمنت خاص را بدست آورید. n شماره سگمنتی است که شما به دنبالش هستید. سگمنت ها از چپ به راست شماره گزاری می شوند. برای مثال اگر URL کامل به شکل زیر باشد:
http://example.com/index.php/news/local/metro/crime_is_up
شماره سگمنت ها به صورت زیر خواهد بود:
1. news
2. local
3. metro
4. crime_is_up
پارامتر اختیاری دوم به طور پیش فرض NULL است و به شما اجازه می دهد مقدار بازگشتی متد در زمانی که سگمنت URI درخواستی پیدا نشود را مشخص کنید. برای مثال، این می توانیم به متد بگوییم عدد 0 را در موقع شکست برگرداند:
$product_id = $this->uri->segment(3, 0);
این کار باعث می شود مجبور به نوشتن همچین کدی نباشیم:
if ($this->uri->segment(3) === FALSE)
{
$product_id = 0;
}
else
{
$product_id = $this->uri->segment(3);
}
rsegment($n[, $no_result = NULL])
پارامترها:
ورودی/خروجی | نام پارامتر | نوع | شرح |
ورودی | $n (int) | int | شماره اندیس سگمنت |
ورودی | no_result$ | mixed | در صورت پیدا نشدن سگمنت چه چیزی برگردانده شود. |
خروجی | mixed | مقدار سگمنت مسیردهی شده یا در صورت پیدا نشدن ان مقدار |
این متد مشابه ()segment است با این تفاوت که به شما اجازه می دهد سگمنت خاصی را از URI مسیردهی مجدد شده در لحظه ای که شما در حال استفاده از ویژگی URI Routing کد ایگنایتر هستید بدست آورید.
slash_segment($n[, $where = 'trailing'])
ورودی/خروجی | نام پارامتر | نوع | شرح |
ورودی | $n | int | شماره اندیس سگمنت |
ورودی | $where | mixed | علامت / به کجا اضافه شود (ابتدا /انتها) |
خروجی | string | مقدار سگمنت، اضافه دار شده / پیشوند دار با یک اسلش، یا یک علامت اسلش در صورتی که سگمنت یافت نشود |
این متد تقریبا مشابه با متد ()segment است، با این تفاوت که یک علامت اسلش به ابتدا و/یا انتها بر حسب پارامتر دوم اضافه می کندو اگر پارامتر استفاده نشود یک اسلش انتهایی اضافه می شود. مثال:
$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');
خروجی ها:
1. segment/
2. /segment
3. /segment/
slash_rsegment($n[, $where = 'trailing'])
پارامترها:
ورودی/خروجی | نام پارامتر | نوع | شرح |
ورودی | $n | int | شماره اندیس سگمنت |
ورودی | $where | mixed | علامت / به کجا اضافه شود (ابتدا /انتها) |
خروجی | string | مقدار سگمنت مسیردهی مجدد شده، اضافه دار شده / پیشوند دار با یک اسلش، یا یک علامت اسلش در صورتی که سگمنت یافت نشود |
این متد تقریبا مشابه با متد ()slash_segment است، با این تفاوت که به شما اجاره می دهد اسلش هایی را به یک سگمنت خاص از URI میردهی مجدد شده در هنگامی که در حال استفاده از ویژگی URI Routing کد ایگنایتر هستید اضافه کنید.
uri_to_assoc([$n = 3[, $default = array()]])
ورودی/خروجی | نام پارامتر | نوع | شرح |
ورودی | $n | int | شماره اندیس سگمنت |
ورودی | $default | array | مقادیر پیش فرض |
خروجی | array | آرایه ای انجمنی از سگمنت های URI |
این متد به شما اجازه می دهد سگمنت های URI را به یک آرایه انجمنی از زوج های کلید/مقدار تبدیل کنید. این URI را در نظر بگیرید:
index.php/user/search/name/joe/location/UK/gender/male
با استفاده از این متد شما این URI را به یک آرایه انجمنی با این الگو تبدیل می کنید:
[array]
(
'name' => 'joe'
'location' => 'UK'
'gender' => 'male'
)
پارامتر اول به شما اجازه می دهد یک offset را مشخص کنید، که به طور پیش فرض ۳ می باشد چون URI به طور معمول شامل یک زوج کنترلر/متد در اولین و دومین سگمنت می باشد. مثال:
$array = $this->uri->uri_to_assoc(3);
echo $array['name'];
پارامتر دوم به شما می گوید نام های پیش فرض کلید ها را مشخص کنید، به طوریکه آرایه بازگشتی همیشه شامل اندیس های مورد انتظار باشد حتی اگر آنها از URI حذف شوند. مثال:
$default = array('name', 'gender', 'location', 'type', 'sort');
$array = $this->uri->uri_to_assoc(3, $default);
اگر URI شامل یک مقدار به طور پیش فرض نباشد یک اندیس آرایه با مقدار NULL به آن نام ست خواهد شد .
در نهایت، اگر یک مقدار مطابق برای یک کلید داده شده یافت نشود (اگر تعداد فرد از سگمنت های URI وجود داشته باشد) مقدار با NULL مشخص خواهد شد.
ruri_to_assoc([$n = 3[, $default = array()]])
پارامترها:
ورودی/خروجی | نام پارامتر | نوع | شرح |
ورودی | $n | int | شماره اندیس سگمنت |
ورودی | $default | array | مقادیر پیش فرض |
خروجی | array | آرایه ای انجمنی از سگگمنت های URI مسیردهی مجدد شده |
این متد مشابه ()uri_to_assoc است با این تفاوت که یک آرایه انجمنی با استفاده URI مسیردهی مجدد شده در زمانی که شما در حال استفاده از ویژگی URI Routing کد ایگنایتر هستید ایجاد می کند.
assoc_to_uri($array)
پارامترها:
ورودی/خروجی | نام پارامتر | نوع | شرح |
ورودی | $array | array | آرایه ورودی متشکل از زوج های کلید/مقدار |
خروجی | string | رشته URI |
یک آرایه انجمنی به صورت ورودی میگیرد و یک رشته URI بر حسب آن تولید می کند. کلیدهای آرایه در رشته شامل خواهند بود. مثال:
$array = array('product' => 'shoes', 'size' => 'large', 'color' => 'red');
$str = $this->uri->assoc_to_uri($array);
// Produces: product/shoes/size/large/color/red
uri_string()
ورودی/خروجی | نوع | شرح |
خروجی | string | رشته URI |
یک رشته بهمراه URI کامل بر می گرداند. بری مثال، اگر URL کامل شما به صورت زیر باشد:
http://example.com/index.php/news/local/345
متد خروجی زیر را بر می گرداند:
news/local/345
ruri_string()
ورودی/خروجی | نوع | شرح |
خروجی | string | رشته URI مسیردهی مجدد شده |
این متد شبیه به ()uri_string است با این تفاوت که URI مسیر دهی مجدد شده را در زمانی که در حال استفاده از ویژگی URI Roiting کد ایگنایتر هستیم را بر می گرداند.
total_segments()
ورودی/خروجی | نوع | شرح |
خروجی | int | تعداد سگمنت های URI |
تعداد کل سگمنت ها را بر می گرداند
total_rsegments()
ورودی/خروجی | نوع | شرح |
خروجی | int | تعداد سگمنت های URI مسیردهی مجدد شده |
مشابه متد ()total_segment است با این تفاوت که تعداد کل سگمنت های URI مسیر دهی مجدد شده را در زمانی که در حال استفاده از ویژگی URI Roiting کد ایگنایتر هستیم را بر می گرداند.
segment_array()
ورودی/خروجی | نوع | شرح |
خروجی | array | آرایه سگمنت های URI |
یک آرایه شامل سگمنت های URI را باز می گرداند. برای مثال:
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}
rsegment_array()
ورودی/خروجی | نوع | شرح |
خروجی | array | آرایه سگمنت های URI مسیردهی مجدد شده |
این متد مشابه متد ()segment_array است با این تفاوت که آرایه ای از سگمنت های URI مسیر دهی مجدد شده را در زمانی که در حال استفاده از ویژگی URI Roiting کد ایگنایتر هستیم را بر می گرداند.