Требования к работе по дальнейшему написанию модуля для CMS Joomla 4
Вам нужна Joomla 4.x для написания модуля (на момент написания и тестирования использована версия Joomla 4.0.0-alpha6-dev).
Пространства имен
С PHP 5.3 насали использоваться пространства имен (namespaces). В других языках программирования, которые используют пространства имён в течение длительного времени, показали что введение этой абстракции для создания структуры, помогают с ясностью написания и восприятия кода.
Пространства имен - это отдельные области, в которых могут существовать определенные логические вещи (в нашем случае классы, интерфейсы, функции и константы). Эти области обеспечивают инкапсуляцию кода и предотвращают конфликты имен.
Давайте посмотрим, как их использовать в Joomla 4. Для этого мы используем вспомогательный файл Helper/FooHelper.php.
Структура файлов
Мы создадим/изменим следующие файлы, созданные в предыдущей статье:
- Helper/FooHelper.php- Это файл, который мы используем здесь в качестве примера. Мы должны его создать.
 
- mod_foo.php- В этом файле мы загрузим пространство имен.
 
- tmpl/default.php- В этом файле мы продемонстрируем, как могут отображаться данные помощника.
 
- mod_foo.xml
Создание Helper/FooHelper.php
Наш новый вспомогательный класс должен принадлежать пространству имен. Это делается с помощью следующего кода. Важно, чтобы эта строка находилась в начале файла.
namespace Joomla\Module\Foo\Site\Helper;Затем мы создадим простой класс с простым методом. Конечно, вы можете сделать всё гораздо сложнее. Взгляните на основные методы в исходных кодах Joomla. Есть много примеров. Они показывают вам как их используют разработчики Joomla 4 и какие у вас есть варианты.
Написание кода Helper/FooHelper.php
Полный код файла FooHelper.php выглядит следующим образом:
<?php
/**
 * @package     Joomla.Site
 * @subpackage  mod_foo
 *
 * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
namespace Joomla\Module\Foo\Site\Helper;
// Нет прямого доступа к этому файлу
defined('_JEXEC') or die;
/**
 * Помощник для mod_foo
 *
 * @since  4.0
 */
class FooHelper
{
	/**
	 * Получить тест foo
	 *
	 * @param   Registry        $params  Параметры модуля
	 * @param   CMSApplication  $app     Приложение
	 *
	 * @return  array
	 */
	public static function getText()
	{
		return 'FooHelpertest';
	}
}Редактирование mod_foo.php
Наш новый вспомогательный класс импортируется в нашу текущую область в начале файла.
use Joomla\Module\Foo\Site\Helper\FooHelper;В итоге используйте вспомогательный файл для проверки, правильно ли он загруженː
$test  = FooHelper::getText($params, $app);Дополнение кода mod_foo.php
Полный код файла mod_foo.php выглядит следующим образом:
<?php
/**
 * @package    [ИМЯ_ПАКЕТА]
 *
 * @author     [АВТОР] <[ЭЛЕКТРОННАЯ ПОЧТА АВТОРА]>
 * @copyright  [ПРАВАЯКОПИЯ]
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 * @link       [САЙТ_АВТОРА]
 */
// Нет прямого доступа к этому файлу
defined('_JEXEC') or die;
use Joomla\CMS\Helper\ModuleHelper;
use Joomla\Module\Foo\Site\Helper\FooHelper;
$test  = FooHelper::getText();
require ModuleHelper::getLayoutPath('mod_foo', $params->get('layout', 'default'));Редактирование tmpl/default.php
В этом файле вы вносите лишь небольшое изменение, чтобы продемонстрировать во внешнем интерфейсе, что ваш вспомогательный файл работает правильно. Вы добавляете только значение переменной в конце текущего вывода.
echo '[PROJECT_NAME]' . $test;Дополнение кода tmpl/default.php
Полный код файла tmpl/default.php выглядит следующим образом:
<?php
/**
 * @package    [PACKAGE_NAME]
 *
 * @author     [AUTHOR] <[AUTHOR_EMAIL]>
 * @copyright  [COPYRIGHT]
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 * @link       [AUTHOR_URL]
 */
// No direct access to this file
defined('_JEXEC') or die;
echo '[PROJECT_NAME]' . $test;Редактирование mod_foo.xml
Сначала вам нужно добавить строку, чтобы пространство имен автоматически устанавливалось в Joomla 4. После этого изменения вам необходимо переустановить свой модуль. Простого изменения уже установленного модуля недостаточно. Если вы занимаетесь локальной разработкой, вы также можете удалить файлы libraries/autoload_psr4.php и он будет автоматически воссоздан заново. После вставки и установки пространство имен станет известно загрузчику JPATH_LIBRARIES . '/autoload_psr4.php'.
<namespace>Joomla\Module\Foo</namespace>Joomla 4 должна скопировать ваш вспомогательный файл при установке модуля. Поэтому Joomla должна знать, где взять вспомогательный файл. Для этого вам нужно добавить следующую строку в свой XML-файл.
<folder>Helper</folder>Дополнение кода mod_foo.xml
Полный код файла mod_foo.xml выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="4.0" client="site" method="upgrade">
    <name>MOD_FOO</name>
    <creationDate>[DATE]</creationDate>
    <author>[AUTHOR]</author>
    <authorEmail>[AUTHOR_EMAIL]</authorEmail>
    <authorUrl>[AUTHOR_URL]</authorUrl>
    <copyright>[COPYRIGHT]</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <version>1.0</version>
    <description>MOD_FOO_XML_DESCRIPTION</description>
    <namespace>Joomla\Module\Foo</namespace>
    <files>
        <filename module="mod_foo">mod_foo.php</filename>
        <folder>tmpl</folder>
        <folder>Helper</folder>
        <folder>language</folder>
        <filename>mod_foo.xml</filename>
    </files>
</extension>Вы читаете статью из небольшого цикла:
«Создание простого модуля для Joomla 4.x»
- «Вступление»
- «Разработка базового модуля для CMS Joomla 4 - Часть 1»
- «Разработка базового модуля для CMS Joomla 4 - Часть 2. Добавление вспомогательного класса, использование пространства имён.»
- «Разработка базового модуля для CMS Joomla 4 - Часть 3. Настройкаː Добавление параметров с помощью полей формы»
- «Разработка базового модуля для CMS Joomla 4 - Часть 4. Использование сценария установки, обновления и удаления.»
- «Разработка базового модуля для CMS Joomla 4 - Часть 5. Добавление автоматического обновления расширения Joomla.»
Перевод с английского официальной документации Joomla 4:
https://docs.joomla.org/J4.x:Creating_a_Simple_Module
 
									 
									




