2009-11-17 1 views
5

Может ли кто-нибудь объяснить здесь, почему на земле CakePHP имеет соглашение об использовании множественных имен для таблиц и контроллеров db и уникальных для моделей? Почему бы не всегда использовать особые термины или всегда множественное число? Мне кажется, что смущает всегда думать: «Теперь я использую множественное число или единство здесь?» (Или есть простой способ запомнить?) И тогда у вас есть таблицы соединений, в которых используется комбинация обоих!Почему CakePHP использует разные соглашения о множественном/единичном именовании?

Я предполагаю, что есть веская причина, но просто не наткнулся на нее.
(я действительно надеюсь, что это не только потому, что Руби-на-Rails работает таким образом.)

Саймон.

+2

Возможно, из-за рубина на рельсах :) –

+1

Идея не существует. Мы всегда используем необязательные поля 'name', 'table' и 'primaryKey' (см. Документы модели), чтобы называть вещи, как мы хотим. Мы капитализируем то, что хотим, когда хотим, и оставляем все единичным. Кроме этого, мне очень нравится Cake. – nilamo

+0

Это также может быть связано с тем, что CakePHP был разработан людьми, которые используют PHP, который по определению является непоследовательным. –

ответ

10

CakePHP Conventions

конвенций CakePHP были отогнали лет опыта веб-разработки и передовой практики. Хотя мы предлагаем вам использовать эти соглашения при разработке с помощью CakePHP, следует упомянуть, что многие из этих принципов легко переопределяются - что особенно удобно при работе с устаревшими системами.

Я думаю, что идея состоит в том, чтобы сделать его более свободно читать и думать о элементах в правильном направлении. Таблицы базы данных всегда множественны, потому что они содержат много записей. Модель единственная, потому что вы должны думать о том, чтобы найти с ней одну запись. Поле выбора для model_id автоматически получит свои параметры от $models, потому что вы выбираете один из многих.

$model = $this->Model->find('first'); // reads like English 
$model = $this->Models->find('first'); // slightly trips you up 

$models = $this->Model->find('all'); // works okay 
$models = $this->Models->find('all'); // more logical, but "this models" still trips 

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

+2

Согласовано. модель является абстракцией для вашего режима данных, и на английском языке они всегда сингулярны (вы не говорите «в чем суть автомобилей»). Контроллер обрабатывает несколько экземпляров абстракции (он все решает). ИМО это вполне согласуется с тем, как мы делаем вещи на английском языке. –

4

есть ли простой способ запомнить?

Да, по отношению к той части, где именование подсчитывает (дБ/модель/контроллер) ... Если это не название модели (то есть. User) или имя внешнего ключа (т.е.. user_id), то это множественное число. Все это в основном множественное, помимо этих двух вещей.

 Смежные вопросы

  • Нет связанных вопросов^_^