Перейти к содержанию

Поиск сообщества

Показаны результаты для тегов 'autoloading'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Invision Community
    • Дизайн и стилизация
    • Приложения и плагины
    • Помощь и поддержка
    • Миграция на Invision Community
    • IP.Board 3.x
    • Разработка
  • invisionbyte.ru
    • Обратная связь
    • Тестовые посты
    • Обо всём

Категории

  • Начало работы
  • Администрирование
    • Интернет-магазин (Commerce)
    • Страницы (Pages)
    • Форумы (Forums)
    • Галерея (Gallery)
    • Загрузки (Files)
    • Блоги (Blogs)
    • Пользователи
  • Модерирование
  • Кастомизация
    • Дизайн и стилизация
    • Локализация
  • Антиспам и безопасность
  • Приложения сторониих разработчиков
  • Разработчику
  • База знаний
  • Общее
    • Хостинг
    • Домены
    • Поисковая оптимизация

Категории

  • Новое сообщество
    • Лицензия
    • Системные требования
    • Установка
    • Обновление
    • Перенос с других платформ
  • Приложения
    • Форумы
    • Страницы
    • Галерея
    • Загрузки
    • Блоги
    • Календарь
    • Коммерция
  • Продвижение
    • Продвижение в социальных сетях
  • Общее использование
    • Знакомство
    • Общие настройки
    • Контент
    • Пользователи
    • Модерация
    • Авторизация через сайты
    • СЕО оптимизация
    • Управление файлами
  • Индивидуализация
    • Темы и дизайн
    • Языки и переводы
    • Редактор сообщений
    • Синтаксис шаблонов
    • CSS фреймворк
    • Javascript
    • Советы и трюки
  • Расширение возможностей
    • Конфигурация
    • Управление сервером
    • IPS Connect
  • Разработка
    • Приложения
    • Плагины
  • Сторонние приложения
    • Automation Rules

Категории

  • Темы и дизайн
  • Дополнительные возможности
  • Обновление Invision Community
  • Безопасность
  • Миграция на Invision Community
  • Ошибки

Категории

  • Русский язык для Invision Community
  • Плагины
  • Темы
  • Модули оплаты

Категории

  • Общее
  • Разработка
    • Приложения
    • Плагины
    • Расширения
  • Фреймворк
    • Ноды
    • Элементы контента
    • Комментарии
    • Отзывы
  • Пользователи и аутентификации
  • Другие возможности
    • Уведомления и E-mail
    • Формы
    • Коммерция
  • Документация разработчика
  • REST API
    • Система
    • Загрузки
    • Страницы
    • Форумы
    • Галерея
    • Календарь
    • Блоги
    • Магазин

Категории

  • Успешные истории и интервью с владельцами сообществ на Invision Community

Категории

  • Локализция Invision Community
  • Коммерция
  • Антиспам и безопасность
  • Темы и дизайн
  • Интерфейс
  • Модерирование
  • Дополнительно
  • Локализация

Блоги

  • Мой тестовый блог
  • IPS 4 и контентные проекты
  • Блог начинающего сисадмина или идеальный сервер для IPS4
  • Подробнее о IPS4
  • Продвижение городского форума на Invision Community

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


Адрес сайта

Найдено: 1 результат

  1. Классы в Invision Community 4 являются "автоматически подгружаемыми". Это означает, что вам не нужно подключать исходный файл IPS4. Для справки, метод автоподгрузки \IPS\IPS::autoloader() находится в файле init.php корневого каталога. Местонахождение классов Классы должны быть расположены в правильной дериктории и быть корректно названы, чтобы загрузчик мог найти их. Существует всего три дериктории: Классы фреймворка Структура имени класса: \IPS\Namespace\Class. Расположение на диске: system/Namespace/Class.php. Классы приложений Структура имени класса: \IPS\app\Namespace\Class (обратите внимание, что ключ приложения в нижнем регистре, но части после используют PascalCase). Расположение на диске: applications/app/sources/Namespace/Class.php Расширения приложений и модули Структура имени класса : \IPS\app\modules\front\module\controller (обратите внимание, все части в нижнем регистре) Расположение на диске: applications/app/modules/front/module/controller.php Для классов фреймворка и классов приложений, конечный файл всегда должен находиться в пределах папки (не беспорядочно в системном каталоге). Если он будет находится хотя бы на один уровень глубже, система будет искать файл в каталоге с тем же именем. Например \IPS\Member находится в директории system/Member/Member.php в то время как \IPS\Member\Group находится в system/Member/Group.php Подмена кода (Monkey Patching) При обьявлении, классы всегда начинаются с подчеркивания. Например, в Invision Community вы вызываете так: \IPS\Member, однако, если посмотреть в исходном файле вы увидите, что он объявлен следующим образом: namespace IPS; class _Member { ... Этот прием называется “Обезьяним патчем” (Monkey Patching), который позволяет сторонним разработчикам перегрузить любой класс без какого-либо пересмотра кода и не конфликтовать хукам друг с другом. В этом примере система, сразу после автозагрузки файла Member.php, выполнит такой код: namespace IPS; class Member extends \IPS\_Member { } Если сторонний разработчик хочет перегрузить \IPS\Member, система вставит это внутрь, так что в итоге получится примерно так: \IPS\Member extends hook1 hook1 extends \IPS\_Member Или, если два хука хотят перегрузить \IPS\Member: \IPS\Member extends hook1 hook1 extends hook2 hook2 extends \IPS\_Member Это означает, что фреймворк, или любой сторонний код должен только вызвать \IPS\Member, и система не только автоматически подгрузит источник, но и создаст цепочку любых хуков, которые хотят перегрузить класс. Если эта технология выглядит пугающе (это не обычная практика) - вы не обязаны это понимать. Вам нужно только знать, что классы должны начинаться с подчеркивания при объявлении, но это подчеркивание обычно никогда не используется. Это также означает, что вместо того, чтобы вызвать "self::" внутри класса, вы должны вызвать "static::", так что вы обращаетесь к перегруженному классу, а не к оригинальному. Сторонние библиотеки Если вы хотите использовать сторонние PHP библиотеки, они, конечно, должны быть включены вручную и не могут использовать замену кода (Monkey patching). Если библиотека соответствует стандарту нэйминга PSR-0, вы можете добавить её в \IPS\IPS::$PSR0Namespaces таким образом, и автозагрузчик затем подгрузит ее: \IPS\IPS::$PSR0Namespaces['Libary'] = \IPS\ROOT_PATH . '/applications/app/system/3rd_party/Library'; В противном случае, вам нужно будет включать исходники вручную.
×
×
  • Создать...

Важная информация

Используя наш сайт вы соглашаетесь с нашей Политикой конфиденциальности