Переход к официальным ресурсам:      Codeigniter4 / Документация / Github / Форум / CodeIgniter3
Привет! В настоящий момент я временно прекратил перевод документации по причине того, что она она содержит целый ряд неточностей, а также еще дорабатывается со стороны разработчиков. Если ты заинтересован в изучении фреймворка CodeIgniter 4, то приглашаю тебя на свой канал на YouTube (Перейти на канал), где я более подробно выкладываю занятия по данному фреймворку.


Помощник по работе с файловой системой (Filesystem Helper)

Этот помощник предлагает ряд полезных функций по работе с файлами и директориями.

Подключение и загрузка

Чтобы начать использование данного хэлпера, подключи его в своем проекте следующей командой:

helper('filesystem');
 

Доступные функции

directory_map ($source_dir [, $directory_depth=0 [, $hidden = FALSE]])
Аргументы:
  • $source_dir (string) – Начальная директория;
  • $directory_depth (int) – Глубина обхода (0 = полный обход, 1 = текущая директория и т.д.);
  • $hidden (boolean) – Требуется ли учитывать скрытые директории;
Возвращает: массив с именами файлов и директорий
Тип данных: массив (array)

Пример:

    $map = directory_map('./');
    print_r($map);
    
    //Вернёт следующий результат (все имеющиеся поддиректории и файлы):
    Array
    (
        [css\] => Array
            (
                [0] => style.css
            )

        [0] => favicon.ico
        [1] => index.php
        [2] => robots.txt
    )

Если добавить второй аргумент:

    $map = directory_map('./', 1);
    print_r($map);
    
    //Вернёт следующий результат (только файлы и директории в текущей директории):
    Array
    (
        [0] => css\
        [1] => favicon.ico
        [2] => index.php
        [3] => robots.txt
    )

По умолчанию, скрытые директории и файлы не учитываются, но если добавить третий аргумент, получим:

    $map = directory_map('./', 1, TRUE);
    print_r($map);
    
    //Вернёт следующий результат (только файлы и директории в текущей директории, включая скрытые):
    Array
    (
        [0] => .hidden-folder\
        [1] => .htaccess
        [2] => css\
        [3] => favicon.ico
        [4] => index.php
        [5] => robots.txt
    )



write_file ($path, $data [, $mode = 'wb'])
Аргументы:
  • $path (string) – Путь к файлу;
  • $data (string) – Информация, которую необходимо записать в файл;
  • $mode (string) – Режим открытия файл;
Возвращает: TRUE в случае успеха, FALSE в случае ошибки
Тип данных: булев (boolean)

Данная функция позволяет записывать информацию в файл. Если файл по указанному пути не существует, то он будет создан автоматически. Пример:

    $data = 'Какая-то информация, которую нужно записать в файл';
    if ( ! write_file('./path/to/file.php', $data))
    {
        echo 'Запись в файл не выполнена';
    }
    else
    {
        echo 'Информация успешно записана!';
    }

По умолачнию используется режим wb, однако, ты можешь использовать любой доступный режим в качестве третьего аргумента функции. Перечень всех возможных режимов ты можешь посмотреть в официальной документации к языку PHP.

Важно знать! Во-первых, если файл не существует, тогда директория, в которую должен быть записан файл, должна иметь соответствующие права на запись. Во-вторых, все пути, передаваемые в функции всегда указываются относительно расположения файла index.php, а НЕ Контроллеров или Представлений! В-третьих, во время записи в файл, данная функция получает эксклюзивную блокировку на этот файл.



delete_files ($path, [, $del_dir = FALSE[, $htdocs = FALSE]])
Аргументы:
  • $path (string) – Путь к файлу;
  • $del_dir (boolean) – Требуется ли удалять директории;
  • $htdocs (boolean) – Требуется ли удалять .htaccess и индексные файлы;
Возвращает: TRUE в случае успеха, FALSE в случае ошибки
Тип данных: булев (boolean)

Данная функция удаляет все файлы по указанному пути. Если второй аргумент указан как TRUE, тогда вместе с файлами будут удалены и все директории. Если указан третий аргумент как TRUE, тогда такие файлы как .htaccess, index.php, index.html не будут удалены. Указание третьего аргумента как TRUE так же автоматически ОТМЕНЯЕТ действие второго аргумента в значении TRUE. Для успешного удаления файлов и директорий они должны иметь соответствующие права на запись.



get_filenames ($source_dir, [, $include_path = FALSE])
Аргументы:
  • $source_dir (string) – Требуемая директория;
  • $include_path (boolean) – Добавлять ли путь к файлу при получении результатов;
Возвращает: Массив, состоящий из имён файлов в директории
Тип данных: массив (array)

Данная функция позволяет получить все имена файлов в указанной директории в виде массива. Если второй аргумент указан как TRUE, тогда к каждому имени файла будет добавлен путь.

Пример:

    $files = get_filenames(APPPATH.'Config/Boot',TRUE);
    print_r($files);
    
    // Вернёт следующий результат
    Array
    (
        [0] => D:\OSPanel\domains\ci4\app\Config\Boot\development.php
        [1] => D:\OSPanel\domains\ci4\app\Config\Boot\production.php
        [2] => D:\OSPanel\domains\ci4\app\Config\Boot\testing.php
    )



get_dir_file_info ($source_dir [, $top_level_only = TRUE])
Аргументы:
  • $source_dir (string) – Путь к директории;
  • $top_level_only (boolean) – НЕ учитывать вложенные директории;
Возвращает: Массив, состоящий из информации о файлах в указанной директории
Тип данных: массив (array)

Данная функция читает указанную директорию и для каждого файла строит массив из следующей информации: имя файла, размер, дата, путь к файлу. По умолчанию вложенные директории не доступны для просмотра, но учитываются при выводе. Если принудительно передать второй аргумент как FALSE, тогда будет выполнен просмотр всех вложенных директорий.

Пример:

    $files = get_dir_file_info(APPPATH.'models/');
    print_r($files);
    
    // Вернёт следующий результат
    Array
    (
        [NewsModel.php] => Array
            (
                [name] => NewsModel.php
                [server_path] => D:\OSPanel\domains\ci4\app\Models\NewsModel.php
                [size] => 692
                [date] => 1578722275
                [relative_path] => D:\OSPanel\domains\ci4\app\models/
            )

        [SubFolderModels1] => Array
        (
            [relative_path] => D:\OSPanel\domains\ci4\app\models/
        )

        [SubFolderModels2] => Array
        (
            [relative_path] => D:\OSPanel\domains\ci4\app\models/
        )

    )



get_file_info ($file [, $returned_values = ['name', 'server_path', 'size', 'date']])
Аргументы:
  • $file (string) – Путь к файлу;
  • $returned_values (array | string) – Тип информации, которую необходимо получить;
Возвращает: Массив, состоящий из необходимой информации о файле или FALSE в случае ошибки
Тип данных: массив (array)

Данная функция позволяет получить: имя, путь, размер и дату создания/изменения конкретного файла, указанного в первом аргументе. Второй арумент позволяет отфильтровать только конкретные параметры, которые необходимо получить. В качестве второго аргумента может быть передан массив или обычная строка, разделенная запятыми. Например, сначала получим всю информацию о конкретном файле, а потом, с помощью второго аргумента, получим лишь некоторые данные о том же самом файле:

    $files = get_file_info(APPPATH.'models/NewsModel.php');
    print_r($files);
    
    // Вернёт следующий результат
    Array
    (
        [name] => NewsModel.php
        [server_path] => D:\OSPanel\domains\ci4\app\models/NewsModel.php
        [size] => 710
        [date] => 1579074591
    )
    
    // Зададим фильтр во втором аргументе
    $files = get_file_info(APPPATH.'models/NewsModel.php', 'name, size');
    print_r($files);
    
    // Вернёт следующий результат
    Array
    (
        [name] => NewsModel.php
        [size] => 710
    )
    



symbolic_permissions ($perms)
Аргументы:
  • $perms (int) – Числовое значение прав доступа;
Возвращает: Права доступа в виде символьной строки
Тип данных: строка (string)

Данная функция позволяет преобразовать числовой формат прав доступа в символьную строку. Для получения прав доступа конкретного файла можно задействовать встроенную в язык PHP функцию fileperms(), которая вернет числовое значение прав доступа для обработки. Пример ниже покажет работу этой функции:

    $perms = symbolic_permissions(fileperms('./index.php'));
    echo $perms;    // Вернёт  -rw-rw-rw-



octal_permissions ($perms)
Аргументы:
  • $perms (int) – Числовое значение прав доступа;
Возвращает: Права доступа в виде трех чисел в восьмеричном формате
Тип данных: строка (string)

Данная функция позволяет отобразить права доступа в восьмеричном формате в виде трёх чисел. При получении прав доступа конкретного файла можно задействовать встроенную в язык PHP функцию fileperms(). Пример работы функции:

    echo octal_permissions(fileperms('./index.php')); // 666



set_realpath ($path, [, $check_existence = FALSE])
Аргументы:
  • $path (string) – Путь к файлу или директории;
  • $check_existence (boolean) – Нужно ли проверять, существует ли путь на самом деле;
Возвращает: Абсолютный путь к файлу или директории
Тип данных: строка (string)

Данная функция возвращает абсолютый путь к файлу или директории без символических ссылок или относительных структур каталогов. Необязательный второй аргумент позволяет вызвать ошибку, если путь не может быть разрешен. Примеры работы функции:

    $file = '/etc/php5/apache2/php.ini';
    echo set_realpath($file); // Вернёт '/etc/php5/apache2/php.ini'

    $non_existent_file = '/путь/к/несуществующему-файлу.txt';
    echo set_realpath($non_existent_file, TRUE);    // Отобразит ошибку, т.к. файл не найден
    echo set_realpath($non_existent_file, FALSE);   // Вернёт '/путь/к/несуществующему-файлу.txt'

    $directory = '/etc/php5';
    echo set_realpath($directory);  // Вернёт '/etc/php5/'

    $non_existent_directory = '/путь/в/никуда';
    echo set_realpath($non_existent_directory, TRUE);  // Отобразит ошибку, т.к. директория не существует
    echo set_realpath($non_existent_directory, FALSE); // Вернёт '/путь/в/никуда'


Комментарии к разделу:

Пока ещё никто не оставил своего комментария. Оставить свой!

Добавить комментарий к статье:


Ваше имя:
Ваша почта:

  Закрыть