В Joomla постепенно, хоть порой и непоследовательно, убирают старое API, доставшееся в наследство от CMS и заменяют его на API от Joomla Framework. При этом порой не обходится без потерь. Многие классы и методы ядра годами имеют статус deprecated, многим имеется альтернатива.

Такими классами являются классы для работы с файловой системой сервера Joomla\CMS\Filesystem. Они перемещены в плагин обратной совместимости Joomla 6 и могут ещё работать. Но лучше постепенно переходить на новые методы, а в новых расширениях использовать их сразу.

Одним из "пострадавших" методов стал File::append(), который добавлял содержимое в конец файла. Это обёртка для file_put_contents() с разными проверками, использованием потоков, если надо и т.д. Заменой для этого метода станет File::write() с флагом appendToFile.

Параметры метода

  • string $file – Абсолютный путь к файлу
  • string $buffer – Содержимое
  • bool $useStreams false – Использовать потоки
  • bool $appendToFile false – дописывать ли в конец или перезаписывать файл
<?php
use Joomla\Filesystem\Filesystem;

$absoluteFilePath = JPATH_SITE . '/dir/file.txt';
$content = 'Содержимое файла';

// appentToFile - 4-й аргумент
File::write($absoluteFilePath, $content, false, true);

Либо с PHP 8.0 можно использовать именованные аргументы, и тогда не важен их порядок и наличие необязательных.

<?php
use Joomla\Filesystem\Filesystem;

$absoluteFilePath = JPATH_SITE . '/dir/file.txt';
$content = 'Содержимое файла';

//Именованные аргументы, appentToFile  теперь 3-й аргумент
File::write(file: $absoluteFilePath, buffer: $content, appendToFile: true);

Класс находится в libraries/vendor/joomla/filesystem/src/File.php. Кстати, для некоторых удалённых методов теперь нужно использовать нативные функции php:

  • вместо Folder::exists() ➡️ is_dir()
  • вместо File::exists() ➡️ is_file() или file_exists()
Толкачев Сергей Юрьевич
Толкачев Сергей Юрьевич

Joomla-разработчик. Контрибьютер ядра Joomla. Один из ведущих Telegram-канала русскоязычного Joomla-сообщества JoomlaFeed, один из модераторов чата русскоязычного Joomla-сообщества. Мои расширения в официальном маркетплейсе расширений Joomla - Joomla Extensions Directory. Имею публикации в официальном журнале международного Joomla-сообщества - Joomla Community Magazine.

Муж. Отец 3 детей.

Россия, Саратов.

Расширения Joomla WebTolk

96 Всего расширений
12 Категорий
492 Выпущено версий
561207 Всего скачиваний
Корзина
Корзина пуста