Комментарии

Файл исходной компоновки
( 0 Голосов )

В листинге ниже приведен код исходной компоновки из файла default.php. Этот простой пример компоновки еще раз наглядно демонстрирует возможности сочетания кода РНР и HTML в одном файле.

<?php /**
©package      Joomla.Site
@subpackage mod_users_latest
©copyright     Copyright (C) 2005 - 2012 Open Source Matters, Inc. All frights reserved.
* ©license      GNU General Public License version 2 or later; see LICENSE.txt
*/
// прямой доступ отсутствует defined ('__JEXEC) or die; ?>
<?php if ('empty($names)) : ?> <ul > <?php foreach($names as $name) : ?> <li> <?php echo $name->username; ?> </li> <?php endforeach; ?> </ul> <?php endif; ?>

После оператора defined () компоновка начинается с условного оператора if. Обратите внимание на применение альтернативного синтаксиса языка РНР в условном операторе if. Именно такой синтаксис рекомендуется всегда использовать в файлах компоновки, где сочетаются элементы разметки РНР и HTML. В условном операторе if проверяется, не является ли пустым массив $names. Это делается для того, чтобы исключить возможность отображения пустого элемента ul.

А откуда берется переменная $names? Напомним, что файл текущей компоновки выполняется с помощью команды require из файла moduserslatest .php. Как пояснялось ранее, сценарий из этого файла включается, а не вызывается как метод из класса, и поэтому все переменные, оказавшиеся в области действия при включении файла этого сценария, по-прежнему остаются в области действия при его выполнении. Это все равно, что вставить файл текущей компоновки в другой файл (в данном случае mod_users_latest.php) там, где он был включен. Следовательно, переменная $names берется из следующей строки кода в файле mod_users_latest.php:

$names  = moduserslatestHelper:igetUsers($params);

В следующей строке кода из файла исходной компоновки создается элемент ul разметки HTML. В него вставляется переменная $moduleclass_sf х в качестве атрибута класса данного элемента. В рассматриваемой здесь строке кода демонстрируется очень важное положение относительно употребления пробелов в исходных файлах РНР. Как правило, пробелы в исходных файлах РНР особого значения не имеют. Так, приведенные ниже выражения совершенно равнозначны. $х = $у + $z; 

Команда echo используется для вставки переменной в атрибут элемента разметки ul. В этом случае пробелы имеют такое же значение, как и при наборе буквального текста. Между словом latestusers и значением, возвращаемым командой echo, пробелы отсутствуют, и поэтому данное значение присоединяется к слову latestusers без пробелов. Так, если бы переменная $moduleclass_sf х имела значение "my_suf f ix", то выполнение команды echo дало бы следующий результат.

А если бы потребовался суффикс класса данного модуля для создания еще одного класса CSS, что зачастую и делается, нам пришлось бы ввести этот суффикс в форму с начальным пробелом. Благодаря этому начальный пробел отделяет имя стандартного класса от его суффикса. Так, если бы ввести <space>my_suffix в качестве суффикса класса, то элемент разметки ul, был бы воспроизведен следующим образом: <ul> и этот элемент можно было бы оформить в стиле из класса CSS с суффиксом my_suffix.

Далее следует фрагмент кода с циклом foreach по переменной $names. Цикл foreach очень удобен для поочередного обращения ко всем элементам массива. Кодовый блок в теле этого цикла выполняется по одному разу для каждого элемента массива. В этом кодовом блоке переменная $name содержит текущий элемент массива. Если же массив пуст, весь этот кодовый блок пропускается.

В теле цикла foreach создается элемент разметки li, в который вставляется имя пользователя без элемента привязки. И завершается код исходной компоновки закрытием элементов разметки HTML в том же порядке, в каком они открывались. Сначала закрывается элемент разметки li, затем элемент разметки с вложенным циклом f oreach, далее элемент разметки ul и наконец элемент разметки с вложенным условным оператором if. Обратите внимание, насколько отступы облегчают чтение кода. Они наглядно показывают не только порядок вложения одних кодовых блоков или элементов разметки в другие, но и всю структуру кода HTML, что особенно важно при сочетании элементов разметки РНР и HTML.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости
Добавить комментарий


Защитный код