Имя контроллера из нескольких слов.

InstantCMS 2.X

Инфа для будущих поколений.

#1 19 мая 2024 в 17:23

Из документации и форума инфы не накопал, поэтому методом «тыка» пришёл к некоторым выводам, по теме.

TL;DR: имена контроллеров можно делать только в lowercase или snake_case. То бишь, либо somecontroller, либо some_controller и обращаться к ним соответственноdomain.zone/somecontroller/action_nameили domain.zone/some_controller/action_name.

Почему так, а не иначе?

Заходим на гитхаб и смотрим на эту строку в файле /system/core/controller.php:

  1. $this->name = $this->name ? $this->name : mb_strtolower(get_called_class());

Я не буду критиковать этот тернарник, просто обращу внимание на mb_strtolower(). Данная функция переводит имя класса в нижний регистр. Да, это не очень хорошо, т.к. (цитата из W3C)

URLs in general are case-sensitive (with the exception of machine names). There may be URLs, or parts of URLs, where case doesn't matter, but identifying these may not be easy. Users should always consider that URLs are case-sensitive.

И в документации самого InstantCMS по стилю кода, можем прочитать, что классы должны именоваться в camelCase, но похоже, на контроллеры это не распространяется.

Вот такие дела. Надеюсь, начинающим разрабам поможет. Если же опытные разработчики знают, как можно сделать иначе — пишите.

#2 22 мая 2024 в 16:09

«Tip», небольшое пояснение к предыдущему посту — если контроллер назван в snake_case, то бишь "some_controller", то имя его модели всё равно должно должна быть в camelCase: "modelSomeController".

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.