joosAutoloader [в разработке]
  • bostonboston Апрель 2011
    В ядре появилась такая удобная штука - автозагрузчик классов, есть joosLoader, который загружает файлы по явному указанию, но для большей гибкости и уменьшения холостых прогонов добавили еще умного автозагрузчика.
    Итак, как же не работает.

    Для начала определим какие типы классов есть в системе:
    1. Классы ядра, для них зарезервированн преффикс joos. Например joosCore, joosText и т.д. Часть классов ядра распологается непосредственно в файле ядра - /core/joostina.php . Другие же расположены в каталоге библиотек /core/libraries. Имена классов библиотек формируются по правилу joosDatabase - /core/ libraries/database.php
    2. Классы контроллеров. Для этих классов зарезервирован преффикс actions и actionsAdmin. Например actionsBlog для контроллера блогов фронта, и actionsAdminBlog для контроллера блогов панели управления. Файлы содержащие эти классы должны распологаться в каталогах компонентов приложения: /app/components /{name}/{name}.php и /app/components /{name}/admin. {name}.php
    3. Классы моделей. Модели должны соотвествовать письменному названию соответсвующей таблицы в формате CamelCase. Например таблица jos_blog, модель – Blog, jos__blog_category – BlogCategory. Модели должны располагаться в каталоге models обрабатывающего контролера приложения: /app/components/{name}/modules/{name}.php . Если контроллер обрабатывает несколько связанных между собой моделей – то рекомендуется распологать все модели в одном файле соответствующем названию корневой модели.
    Для работы в панели управления рекомендуется использовать новую модель с наследованием от основной и преффиксом admin. Например модель Blog, модель для работы в панели управления – adminBlog. Располагать модель следует в файле по схеме /app/components/{name}/modules/admin.{name}.php . Такая схема позволит наиболее оптимально расходывать память при работе фронтальной части приложения, и обеспечить гибкость в описании модели и её параметров для автоматического генератора интерфейсов панели управления joosAutoAdmin.

    Пока всё, еще остались хелперы модулей, хелперы контроллеров и плагины.
    Отредактированно boston в 2011-04-17 18:07:57
  • kikassokikasso Март 2012
    Идея! Принять соглашение по наименованию файлов и классов, это внесет определенную логику в структуру и позволит сделать код joosAutoloader, joosCore::path() проще, меньше.
    Сейчас, например, файл называется controller.admin.users.ajax.php, а класс actionsAjaxAdminUsers никакой логики

    Как вариант - принят формат имени класса в виде: pre_Name_end,
    где:
    - pre - это префикс, определяющий путь к файлу и префикс имени файла, пишется прописными буквами
    - Name - уникальная часть имени класса и файла, пишется прописными, первая буква заглавная, отделяется знаками подчеркивания
    - End - окончание, определяет окончание имени файла
    Такая себе смесь camelCase и under_score :-)

    Например, результат работы функции path_class:
    path_class('joos_Database') -> core\libraries\database.php

    path_class('actions_Users') -> app\components\users\controller.users.php
    path_class('actions_Users_Ajax') -> app\components\users\controller.users.ajax.php
    path_class('actionsAdmin_Users') -> app\components\users\controller.admin.users.php
    path_class('actionsAdmin_Users_Ajax') -> app\components\users\controller.admin.users.ajax.php

    path_class('model_Users') -> app\components\users\models\model.users.php
    path_class('model_Users_Extra') -> app\components\users\models\model.users.extra.php
    path_class('modelAdmin_Users') -> app\components\users\models\model.admin.users.php
    path_class('modelAdmin_Users_Extra') -> app\components\users\models\model.admin.users.extra.php

    path_class('modulesHelper_Usersmenu') -> app\modules\usersmenu\helper.admin.usersmenu.php

    path_class('plugins_Editors') -> app\plugins\editors\editors.php
    path_class('plugins_Editors_Elrte') -> app\plugins\editors\editors.elrte.php
    Отредактированно kikasso в 2012-03-05 15:12:27
  • kikassokikasso Март 2012
    Вот набросок функции path_class, для получения пути к файлу по имени класса
    Отредактированно kikasso в 2012-03-05 15:08:04
  • bostonboston Март 2012
    Эм, реализация же уже есть: https://github.com/joostina/joostina/blob/master/core/autoloader.php#L116

Добро пожаловать!

Похоже, что Вы здесь впервые. Если хотите поучаствовать, нажмите на одну из этих кнопок!

Войти Зарегистрироваться

В теме отметились