Главная / Программирование /
Разработка расширений для CMS Joomla / Тест 5
Разработка расширений для CMS Joomla - тест 5
Упражнение 1:
Номер 1
Какое значение будет передано в функцию генерации SEF-ссылок для ссылки index.php?option=com_mycomponent&var1=value1&var2=value2&…&varN=valueN
?
Ответ:
 (1) сама эта ссылка 
 (2) option=com_mycomponent&var1=value1&var2=value2&…&varN=valueN
 
 (3) Array(0=>'com_mycomponent', 1=>'value1', 2=>'value2', ..., N=>'valueN')
 
 (4) Array([option]=>com_mycomponent [var1]=>value1 [var2]=>value2... [varN]=>valueN)
 
Номер 2
Какое значение функция генерации SEF-ссылок получила на вход, если она вернула массив Array([0]=>value1 [1]=>value2 … [N-1]=>valueN)
?
Ответ:
 (1) var1=value1&var2=value2&…&varN=valueN
 
 (2) Array(0=>'value1', 1=>'value2', ..., N-1=>'valueN')
 
 (3) Array(0=>'com_mycomponent', 1=>'value1', 2=>'value2', ..., N=>'valueN')
 
 (4) Array([option]=>com_mycomponent [var1]=>value1 [var2]=>value2... [varN]=>valueN)
 
Номер 3
Какая SEF-ссылка будет сгенерирована из массива Array([0]=>value1 [1]=>value2 … [N-1]=>valueN)
?
Ответ:
 (1) /mycomponent/value1/value2/…/valueN
 
 (2) /value1/value2/…/valueN
 
 (3) /value1&value2&…&valueN
 
 (4) /mycomponent&value1&value2&…&valueN
 
Упражнение 2:
Номер 1
Какие функции должны находиться в файле /components/com_mycomponent/router.php?
Ответ:
 (1) MyComponentBuildRoute()
 
 (2) MyComponentParseRoute()
 
 (3) MyComponentRoute()
 
 (4) MyComponentGetRoute()
 
Номер 2
В каком файле должна находиться функция генерации SEF-ссылок для анализа ссылки index.php?option=com_mycomponent&var1=value1&var2=value2
?
Ответ:
 (1) /components/mycomponentrouter.php 
 (2) /components/com_mycomponent/mycomponentrouter.php 
 (3) /components/com_mycomponent/router.php 
 (4) /components/com_mycomponent/com_mycomponentrouter.php 
Номер 3
Какие функции должны находиться в файле /components/com_<имя компонента>/router.php?
Ответ:
 (1) перегруженная функция _()
 
 (2) функция _()
 
 (3) функция генерации SEF-ссылок 
 (4) функция декодирования SEF-ссылок 
Упражнение 3:
Номер 1
Какой шаблон SEF-ссылки неявно задается следующим кодом:
if (isset($query['controller']))
{
$segments[] = $query['controller'];
unset($query['controller']);
}
if (isset($query['task']))
{
$segments[] = $query['task'];
unset($query['task']);
}
if (isset($query['view']))
{
$segments[] = $query[view'];
unset($query['view']);
}
if (isset($query['id']))
{
$segments[] = $query['id'];
unset($query['id']);
}?
Ответ:
 (1) переменные записываются в следующем порядке: id, view, task, controller
 
 (2) переменные записываются в следующем порядке: view, task, controller
 
 (3) переменные записываются в следующем порядке: controller, task, view, id
 
 (4) данный код не задает никакого шаблона 
Номер 2
Предположим, в SEF-ссылках компонента testcomponent
переменные записываются в следующем порядке: controller, task, view, id
. Какой массив должна вернуть функция TestComponentBuildRoute()
для ссылки index.php?option=com_testcomponent&controller=c&task=t&view=v&id=i
?
Ответ:
 (1) Array(0=>'c', 1=>'t', 2=>'v', 3=>'i')
 
 (2) Array('controller'=>'c', 'task'=>'t', 'view'=>'v', 'id'=>'i')
 
 (3) Array(0=>'i', 1=>'v', 2=>'t', 3=>'c')
 
 (4) Array('id'=>'i', 'view'=>'v', 'task'=>'t', 'controller'=>'c')
 
Номер 3
Предположим, в SEF-ссылках компонента testcomponent
переменные записываются в следующем порядке: controller, task, view, id
. Какой массив должна вернуть функция TestComponentParseRoute()
для ссылки component/testcomponent/c/t/v/i
?
Ответ:
 (1) Array(0=>'c', 1=>'t', 2=>'v', 3=>'i')
 
 (2) Array('controller'=>'c', 'task'=>'t', 'view'=>'v', 'id'=>'i')
 
 (3) Array(0=>'i', 1=>'v', 2=>'t', 3=>'c')
 
 (4) Array('id'=>'i', 'view'=>'v', 'task'=>'t', 'controller'=>'c')
 
Упражнение 4:
Номер 1
Как добавить в документ $document ссылку на скрипт /components/com_mycomponent/js/menu.js?
Ответ:
 (1) $document->addScript('/components/com_mycomponent/js/menu.js')
; 
 (2) $document->addScriptDeclaration('/components/com_mycomponent/js/menu.js')
; 
 (3) $document->addMetaData('/components/com_mycomponent/js/menu.js')
; 
 (4) только с помощью дополнительных плагинов 
Номер 2
Как добавить в документ $document код alert('Hello World')
?
Ответ:
 (1) $document->addScript('alert("Hello World")')
; 
 (2) $document->addScriptDeclaration('alert("Hello World")')
; 
 (3) $document->addMetaData('alert("Hello World")')
; 
 (4) $document->addScriptText('alert("Hello World")')
; 
Номер 3
Какие методы добавляют в секцию документа <head>
тег <script>
?
Ответ:
 (1) addScript()
 
 (2) addScriptDeclaration()
 
 (3) addMetaData()
 
 (4) addScriptTag()
 
Упражнение 5:
Номер 1
Какой метод добавляет в секцию документа <head>
тег <link>
?
Ответ:
 (1) addStyleDeclaration()
 
 (2) addMetaData()
 
 (3) addStyleSheet()
 
 (4) addLink()
 
Номер 2
Какой метод добавляет в секцию документа <head>
тег <style>
?
Ответ:
 (1) addStyleDeclaration()
 
 (2) addMetaData()
 
 (3) addStyleSheet()
 
 (4) addLink()
 
Номер 3
Какие методы добавляют в секцию документа <head>
таблицу стилей?
Ответ:
 (1) addStyleDeclaration()
 
 (2) addMetaData()
 
 (3) addStyleSheet()
 
 (4) addStyle()
 
Упражнение 6:
Номер 1
Предположим, в SEF-ссылках компонента testcomponent
переменные записываются в следующем порядке: view, task, id
. Функция TestComponentBuildRoute()
выглядит так:
function TestComponentBuildRoute($query)
{
$segments = array();
if (isset($query['view']))
{
$segments[] = $query['view'];
unset($query['view']);
}
if (isset($query['task']))
{
$segments[] = $query['task'];
unset($query['task']);
}
if (isset($query['id']))
{
$segments[] = $query['id'];
unset($query['id']);
}
return $segments;
}
Какая SEF-ссылка будет сгенерирована из ссылки index.php?option=com_testcomponent&view=v&task=t&id=11
?
Ответ:
 (1) /component/testcomponent/v/t/11?view=v&task=t&id=11
 
 (2) /component/testcomponent/v/t/11
 
 (3) /component/testcomponent/v/t?id=11
 
 (4) /component/option=testcomponent&view=v&task=t&id=11
 
Номер 2
Сгенерирована SEF-ссылка /component/testcomponent/v/t/11?view=v&task=t&id=11
. Что привело к этой ошибке?
Ответ:
 (1) ошибки нет, ссылка построена верно 
 (2) функция генерации SEF-ссылок и функция их декодирования используют разные шаблоны ссылок 
 (3) исходная ссылка не соответствовала шаблону, использующемуся в функциях генерации и декодирования SEF-ссылок 
 (4) массив переменных запроса был передан в функцию TestComponentBuildRoute()
по значению, а не по ссылке 
Номер 3
Сгенерирована SEF-ссылка /component/testcomponent/v/t/11?view=v&task=t&id=11
. Как выглядит прототип функции генерации SEF-ссылок?
Ответ:
 (1) function TestComponentParseRoute($query)
 
 (2) function TestComponentRoute($query)
 
 (3) function TestComponentBuildRoute(&$query)
 
 (4) function TestComponentBuildRoute($query)
 
Упражнение 7:
Номер 1
Предположим, в SEF-ссылках компонента testcomponent
переменные записываются в следующем порядке: view, task, id
. Функция TestComponentBuildRoute()
формирует массив так:
if (isset($query['view']))
{
$segments[] = $query['view'];
unset($query['view']);
}
if (isset($query['task']))
{
$segments[] = $query['task'];
unset($query['task']);
}
Какая SEF-ссылка будет сгенерирована из ссылки index.php?option=com_testcomponent&view=v&task=t&id=11
?
Ответ:
 (1) /component/testcomponent/v/t/11
 
 (2) /component/testcomponent/view=v&task=t&id=11
 
 (3) /component/testcomponent/v/t?id=11
 
 (4) /component/option=testcomponent&view=v&task=t&id=11
 
Номер 2
Предположим, в SEF-ссылках компонента testcomponent
переменные записываются в следующем порядке: view, task, id
. Была сгенерирована SEF-ссылка /component/testcomponent/v/t?id=11
. Как выглядела функция TestComponentBuildRoute()
?
Ответ:
 (1)
function TestComponentBuildRoute(&$query)
{
$segments = array();
if (isset($query['view']))
{
$segments[] = $query['view'];
unset($query['view']);
}
if (isset($query['task']))
{
$segments[] = $query['task'];
unset($query['task']);
}
return $segments;
}
 
 (2)
function TestComponentBuildRoute(&$query)
{
$segments = array();
if (isset($query['view']))
{
$segments[] = $query['view'];
unset($query['view']);
}
if (isset($query['task']))
{
$segments[] = $query['task'];
unset($query['task']);
}
if (isset($query['id']))
{
$segments[] = $query['id'];
unset($query['id']);
}
return $segments;
}
 
 (3)
function TestComponentBuildRoute(&$query)
{
$segments = array();
if (isset($query['id']))
{
$segments[] = $query['id'];
unset($query['id']);
}
if (isset($query['task']))
{
$segments[] = $query['task'];
unset($query['task']);
}
if (isset($query['view']))
{
$segments[] = $query['view'];
unset($query['view']);
}
return $segments;
}
 
 (4)
function TestComponentBuildRoute($query)
{
$segments = array();
if (isset($query['view']))
{
$segments[] = $query['view'];
unset($query['view']);
}
if (isset($query['task']))
{
$segments[] = $query['task'];
unset($query['task']);
}
return $segments;
}
 
Номер 3
Предположим, в SEF-ссылках компонента testcomponent
переменные записываются в следующем порядке: view, task, id
. Была сгенерирована SEF-ссылка /component/testcomponent/v/t?id=11
. Что привело к этой ошибке?
Ответ:
 (1) функция TestComponentBuildRoute()
не удалила из массива переменных запроса значение id
 
 (2) функция TestComponentParseRoute()
не удалила из массива переменных запроса значение id
 
 (3) массив переменных запроса был передан в функцию TestComponentBuildRoute()
по значению, а не по ссылке 
 (4) ошибки нет, ссылка сгенерирована верно 
Упражнение 8:
Номер 1
Отметьте неверное утверждение.
Ответ:
 (1) поле block
объекта JUser
равно 1, если пользователь заблокирован 
 (2) поле email
объекта JUser
равно 1, если пользователь согласен получать сообщения с сайта по электронной почте 
 (3) поле date
объекта JUser
хранит дату и время регистрации аккаунта пользователя 
 (4) поле guest
объекта JUser
равно 1, если пользователь не залогинен 
Номер 2
Отметьте неверное утверждение.
Ответ:
 (1) поле sendEmail
объекта JUser
равно 1, если пользователь согласен получать сообщения с сайта по электронной почте 
 (2) поле date
объекта JUser
хранит дату и время последнего входа пользователя в систему 
 (3) поле username
объекта JUser
хранит отображаемое имя пользователя 
 (4) поле params
объекта JUser
хранит настройки пользователя
 
Номер 3
Отметьте поля класса JUser
, которые принимают значение true
или false
(0 или 1).
Ответ:
 (1) sendEmail
 
 (2) block
 
 (3) guest
 
 (4) params