PHPackages                             cmsx/controller - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. cmsx/controller

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

cmsx/controller
===============

CMSx Controller component

131PHP

Since Mar 17Pushed 13y ago1 watchersCompare

[ Source](https://github.com/cmsx/Controller)[ Packagist](https://packagist.org/packages/cmsx/controller)[ RSS](/packages/cmsx-controller/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Маршрутизация и контроллеры
===========================

[](#маршрутизация-и-контроллеры)

Роутинг
-------

[](#роутинг)

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

```
$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](https://github.com/cmsx/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](https://github.com/cmsx/FW) контроллер обычно возвращает объект [Page](https://github.com/cmsx/Page) или [Template](https://github.com/cmsx/Template).

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/2027189?v=4)[Igor](/maintainers/cmsx)[@cmsx](https://github.com/cmsx)

---

Top Contributors

[![cmsx](https://avatars.githubusercontent.com/u/2027189?v=4)](https://github.com/cmsx "cmsx (15 commits)")

### Embed Badge

![Health badge](/badges/cmsx-controller/health.svg)

```
[![Health](https://phpackages.com/badges/cmsx-controller/health.svg)](https://phpackages.com/packages/cmsx-controller)
```

###  Alternatives

[nojimage/cakephp-environment

CakePHP Environment Plugn. The configuration switching library by filebase.

11242.5k](/packages/nojimage-cakephp-environment)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
