معرفی JURI و SetQuery

چاپ

در این مقاله قصد داریم به معرفی کلاس JUri و یکی از متدهای آن به نام setQuery بپردازیم و کاربرد آنها و نحوه ی استفاده از آنها را در برنامه نویسی جوملا مشخص کنیم. 


URI چیست؟ 

در فناوری اطلاعات، uri یک رشته است که از آن برای مشخص کردن یک منبع استفاده می شود. رایج ترین شکل uri همان آدرس یک وبسایت است. 


وظیفه ی متد setQuery از کلاس JUri در جوملا

متد setQuery، قسمت query از یک uri  که به وسیله ی شیء JUri مشخص شده است را تنظیم می کند.


مثال 1 

در این مثال، یک شیء URI را ایجاد می کنیم و سپس با استفاده از یک رشته ی داده شده، قسمت query از uri را که مشخص کننده ی پارامترها است را تغییر می دهیم:

مثال 1

$uri = 'http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=view&id=32#anchorthis';
$u =& JURI::getInstance( $uri );
echo 'Before: ' . $u->toString() . "\n";
$u->setQuery( 'task=save&id=17' );
echo 'After : ' . $u->toString();

توضیحات: همان طور که در خط اول از کد بالا مشاهده می کنید، یک uri را ایجاد کرده ایم و در متغیر uri$ ذخیره کرده ایم. در خط دوم، یک نمونه از کلاس JURI را به وسیله ی متغیر uri$ ایجاد کرده ایم. در خط سوم همان uri اولیه را به رشته تبدیل کرده و چاپ می کنیم و در خط چهارم با استفاده از متد setQuery، قسمت کوئری(پارامترها) از uri اولیه را تغییر می دهیم. و در خط آخر، uri جدید را به رشته تبدیل کرده و چاپ می کنیم. 

خروجی مثال بالا برابر است با:

خروجی مثال 1

Before: http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=view&id=32#anchorthat
After : http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=save&id=17#anchorthat


 مثال 2

در این مثال، یک شیء URI را ایجاد می کنیم و سپس با استفاده از یک آرایه، که آیتم ها را دربردارد، قسمت کوئری را تغییر می دهیم:

مثال 2

$uri = 'http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=view&id=32#anchorthis';
$u =& JURI::getInstance( $uri );
echo 'Before: ' . $u->toString() . "\n";
$query = array( 'task' => 'log',
                'id'   => 128,
                'act'  => 'redirect'
              );
$u->setQuery( $query );
echo 'After : ' . $u->toString();

خروجی مثال بالا برابر است با:

خروجی مثال 2

Before: http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=view&id=32#anchorthat
After : http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=log&id=128&act=redirect#anchorthat


وظیفه ی متد getQuery از شیء JURI در جوملا

متد getQuery، قسمت query(پارامترها) از یک uri را برمی گرداند. 

مثال 3

در این مثال، قسمت query از uri مورد نظر، بعنوان یک رشته، برمی گردد:

مثال 3

$uri = 'http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=view&id=32#anchorthis';
$u =& JURI::getInstance( $uri );
echo 'Query is ' . $u->getQuery();

نتیجه به صورت زیر خواهد بود:

نتیجه مثال 3

Query is task=view&id=32

مثال 4 

در این مثال، قسمت query از uri مورد نظر، بعنوان یک آرایه از آیتم ها، برمی گردد:

مثال 4

$uri = 'http://fredbloggs:این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید:8080/path/to/Joomla/index.php?task=view&id=32#anchorthis';
$u =& JURI::getInstance( $uri );
print_r( $u->getQuery( true ) );

 نتیجه به صورت زیر خواهد بود:

نتیجه مثال 4

Array
(
    [task] => view
    [id] => 32
)