定制 cmsx/controller 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

cmsx/controller

Composer 安装命令:

composer require cmsx/controller

包简介

CMSx Controller component

README 文档

README

Роутинг

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

$r = new \CMSx\Router; //Создаем объект Router
$r->setControllersPath('/path/to/controllers/'); //Указываем путь к папке с контроллерами
$r->process(); //Включаем обработку запросов

При разработке приложения, полезно видеть дополнительную информацию об ошибках и подробности возникновения Exception'ов. Для этого предусмотрен режим отладки, включаемый с помощью enableDebug($on = true). В режиме отладки расширенная информация об Exception'е указывается в тексте страницы ошибки.

Если нужно реализовать свой дизайн для страниц ошибок, можно отнаследоваваться от класса Page, и переопределить метод Router'a getErrorPage(), чтобы он возвращал нужный объект. При возникновении ошибки, к объекту Page добавляется свойство 'exception', содержащее объект выброшенного исключения.

Именование контроллеров

В системе установлены соглашения на именование контроллеров и действий (action). По-умолчанию, для главной страницы вызывается defaultController->indexAction().

Если указан один аргумент /some/, при наличии контроллера someController в нем будет вызван indexAction(). Если такого контроллера нет, система попытается вызвать defaultController->someAction()

Для URL /some/work/ будет предпринята попытка вызвать someController->workAction().

Если по первому аргументу контроллер не будет найден, система попробует вызвать defaultController->someAction(). Если и это не получится, будет возвращена 404 ошибка.

Если контроллер найден, но такого метода не существует, система также выдаст ошибку. Чтобы обрабатывать динамические адреса, в контроллере можно реализовать функцию __call(), внутри которой определять логику работы с данным адресом.

Работа контроллера

Если контроллер наследует базовый класс CMSx\Controller, в нем доступны свойства:

  • $this->url - Объект URL содержащий текущий адрес;
  • $this->controller - имя контроллера, без суффикса "Controller";
  • $this->action - имя действия, без суффикса "Action".

Для стандартных ошибок предусмотрены методы, выбрасывающие CMSx\Controller\Exception:

  • NotFound($msg = null) - Страница не найдена;
  • Unauthorized($msg = null) - Доступ без авторизации запрещен;
  • Forbidden($msg = null) - Доступ запрещен;
  • Unavailable($msg = null) - Сервис недоступен;
  • ServerError($msg = null) - Ошибка сервера;

$msg - может быть указано произвольное уточняющее сообщение, которое отображается только при включенном режиме отладки, см.секцию Роутинг.

Для перенаправления пользователя предусмотрены методы:

  • Redirect($url, $permanent = false) - перенаправление на заданный $url.
  • Back() - возврат на адрес, откуда пользователь пришел на страницу. Оба метода также выбрасывают CMSx\Controller\Exception, обрабатываемый на уровне Router`a.

Контроллер после выполнения должен вернуть строку, число или объект, который можно привести к строке (реализован метод __toString()). Если контроллер вернул null или false, ничего выведено не будет.

В рамках CMSx Framework контроллер обычно возвращает объект Page или Template.

cmsx/controller 适用场景与选型建议

cmsx/controller 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 31 次下载、GitHub Stars 达 1, 最近一次更新时间为 2012 年 12 月 27 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 cmsx/controller 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 cmsx/controller 我们能提供哪些服务?
定制开发 / 二次开发

基于 cmsx/controller 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 31
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 17
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2012-12-27