Главная / Программирование /
Разработка расширений для 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