Вычисление имени модели

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Вычисление имени модели

Сообщение jakiro »

Добра!
Надоело постоянно копи-пастить имя модели от контроллера к контроллеру, захотелось автоматически вычислять его
Есть класс
ReviewsController у которого есть родитель:

Код: Выделить всё

class ReviewsController extends BackendController
{

 public function actionIndex()
  {
    $rows = Reviews::find()->all();
  }
}
родитель: BackendController

Код: Выделить всё

class BackendController extends BaseController
{
  public static $model;

  public function init()
  {
    parent::init();
    $reflect = new \ReflectionClass(static::className());
    static::$model = str_replace('Controller', null, $reflect->getShortName());
  }
}
теперь, в любом унаследованном контроллере я получу имя текущего: static::$model

Но я не могу сделать

Код: Выделить всё


    $rows = static::$model::find()->all();
Засада(
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вычисление имени модели

Сообщение samdark »

Ох...
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Вычисление имени модели

Сообщение zelenin »

рефлексия дорогая, но даже не в этом проблема. Просто надо понимать, что контроллер напрямую не относится к модели. Да, в crud-парадигме это так, но в реальном мире crud'а очень мало. Плюс в программировании главное не упростить себе кодогенерацию, а главное чтобы ваш код легко прочли, то есть все должно быть максимально явным, без какой-либо магии в фоне.
В общем откажитесь от идеи)
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Вычисление имени модели

Сообщение jakiro »

zelenin писал(а):рефлексия дорогая, но даже не в этом проблема. Просто надо понимать, что контроллер напрямую не относится к модели. Да, в crud-парадигме это так, но в реальном мире crud'а очень мало. Плюс в программировании главное не упростить себе кодогенерацию, а главное чтобы ваш код легко прочли, то есть все должно быть максимально явным, без какой-либо магии в фоне.
В общем откажитесь от идеи)
Ну да, соглашусь, что вариант не самый очевидный. Но я и один сам себе предоставлен. Просто заметил, что постоянно коп-паст один, одинаковые контроллеры, одни и теже действия. Решил наколдовать, но что то ума не хватило :D
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Вычисление имени модели

Сообщение zelenin »

jakiro писал(а):Но я и один сам себе предоставлен
привычка писать понятный код - дело практики.
jakiro писал(а):Просто заметил, что постоянно коп-паст один, одинаковые контроллеры, одни и теже действия. Решил наколдовать, но что то ума не хватило :D
ну в начале проекта всегда бывает стадия бойлерплейтинга, когда штампуешь один за одним...
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Вычисление имени модели

Сообщение samdark »

Надо штамповать — сделайте шаблон для Gii.
Ответить