Версия: 5.x
Структура папок

В ReadyScript имеется набор зарезервированных имен директорий и файлов, в которых система ожидает данные определенного содержания. Пример файловой структуры:

  • cache //Папка для КЭШ-файлов
  • core
    • rs //Фреймворк. Ядро сайта
    • smarty //Папка Smarty
    • system //Здесь находятся файлы, инициализирующие основные функции системы (autoload, session, exception handlers)
  • modules //Здесь должны находиться модули
    • main //Модуль Main
      • config //Здесь должны находиться конфигурационные классы модуля
        • file.inc.php //Конфигурационный файл модуля
        • module.xml //Файл со сведениями о модуле и его настройках по-умолчанию
        • handlers.inc.php //Файл с обработчиками событий, на которые подписан модуль
        • install.inc.php //Файл с инструкциями по установке модуля
        • patches.inc.php //Файл для патчей, устанавливаемых при обновлении
        • uninstall.inc.php //Файл с инструкциями по удалению модуля
      • controller //Контроллеры модуля Main
        • admin //Корневая папка для контроллеров административной части
        • front //Корневая папка для фронт контроллеров
        • block //Корневая папка для блочных контроллеров
      • model //Корневая папка для моделей
        • orm //Корневая папка для ORM объектов
        • commenttype //Папка для классов, описывающих тип комментариев
        • csvschema //Папка для классов, описывающих CSV схемы обмена данными
        • notice //Папка для классов, описывающих уведомления модуля
        • ... //Здесь может быть создана произвольная структура данных
      • view //Корневая папка для шаблонов отображения
        • css //CSS стили
        • img //Изображения
        • js //JavaScript
        • hooks //Папка с шаблонами-обработчиками хуков
        • lang //Папка для языковых файлов
          • en //Язык
            • messages.lng.php //Фразы, используемые в PHP, шаблонах
            • messages.js.php //Фразы, используемые в JavaScript
          • ... //Другие языки
    • ... //Следующие модули
  • resource //Папка для общих ресурсов(js, img, css, lang)
    • css //CSS стили
    • img //Изображения
    • js //JavaScript
    • lang //Папка для языковых файлов
      • en //Язык
        • messages.lng.php //Фразы, используемые в PHP, шаблонах
        • messages.js.php //Фразы, используемые в JavaScript
      • ... //Другие языки
  • storage //Папка для пользовательских данных
  • templates //Папка для тем оформления
    • default //Тема оформления default
      • resource
        • css //CSS стили
        • img //Изображения
        • js //JavaScript
        • lang //Папка для языковых файлов темы оформления
          • en //Язык
            • messages.lng.php //Фразы, используемые в PHP, шаблонах
            • messages.js.php //Фразы, используемые в JavaScript
          • ... //Другие языки
      • moduleview //Папка для перегрузки шаблонов модулей
        • main //Шаблоны в этой папке будут перегружать шаблоны модуля Main
      • theme.xml //Файл с описанием темы оформления
      • blocks.xml //Файл с описанием связи страниц системы и шаблонов темы оформления
  • .htaccess //Правила apache для корректной работы скрипта
  • index.php //Единая точка входа. Все запросы обрабатываются здесь
  • package.inc.php //Файл с названием текущей комплектации системы
  • setup.inc.php //Файл, в котором можно переопределить настройки системы
  • config.auto.php //Файл, формируемый во время установки с настройками системы
  • _local_settings.php //Файл, в котором можно переназначить настройки системы, удобно использовать во время разработки.

Правила именования файлов. Автозагрузка классов.

Чтобы исключить проблемы, связанные с различной поддержкой регистра имен на ОС Windows и Linux, принято называть все файлы и папки строчными буквами.

Классы в системе могут располагаться внутри каталога /core/rs или /modules, т.к. именно в этих папках осуществляется поиск файлов с классами средствами autoload'а.

Все классы(ядра и модулей), располагающиеся в указанных выше папках доступны в любом месте PHP-кода.

Каждый класс в системе должен находиться в отдельном файле, чтобы быть загруженным системой по мере необходимости. Имя файла должно соответствовать названию класса, а расширение должно быть .my.inc.php или .inc.php Пространство имен(namespace) класса должно соответствовать пути к файлу относительно корневого каталога для классов (/modules или /core).

Например, в файле /modules/catalog/model/orm/product.inc.php может быть объявлен следующий класс:

namespace Catalog\Model\Orm; //Путь, относительно корневой папки для классов модулей /modules
class Product
{}
//В любом месте системы обращение к данному классу будет выглядеть так:
$instance = new \Catalog\Model\Orm\Product();

или в файле /rs/cache/manager.inc.php может быть объявлен класс:

namespace RS\Cache; //Путь, относительно корневой папки для классов ядра /core
class Manager
{}
//В любом месте системы обращение к данному классу будет выглядеть так:
$instance = new \RS\Cache\Manager();