Это действительно зависит от вашего определения «большой». Вы имеете в виду большие наборы данных? Очень сложная модель предметной области? Или просто много-много разных контроллеров / действий?
Запись / чтение данных .
Все, что вы можете делать с простым SQL, вы можете делать в CakePHP. Это может быть не всегда хорошо, но в худшем случае это не хуже, чем прямой SQL.
Но вы действительно не должны думать о запросах. Вы должны думать о своей доменной модели. CakePHP реализует шаблон активной записи. Это работает очень хорошо, если ваша модель предметной области хорошо сопоставляется с активной моделью записи. Но если это не так, то я бы не рекомендовал CakePHP. Если ваша модель домена не соответствует Active Record, вы потратите много времени на борьбу с Cake. И это не весело. Вам было бы намного лучше с платформой, которая реализует шаблон Data Mapper (например, Zend).
1012 * Строительные леса *
Строительные леса являются временными. Он обрабатывает внешние ключи (если вы определяете их как в модели, так и в базе данных), но это все. Вы не можете изменить леса. Но вы можете испечь их!
Когда вы запекаете контроллер или представление, вы в основном записываете скаффолд в файл как отправную точку для вашей собственной реализации. После выпечки вы можете делать все, что захотите. Недостатком выпечки является то, что она больше не обновляется при изменении моделей или базы данных. Итак, если вы запекаете контроллер и просматриваете и добавляете поля в модель, вам нужно вручную добавить эти поля в контроллер и просматривать код.
скорость развития
В моем случае, я гораздо быстрее разрабатываю веб-сайт в CakePHP, чем в простом коде. Но только если Active Record подходит для приложения! Смотри мой первый пункт. Даже в этом случае Cake, вероятно, все еще быстрее, но я был бы еще быстрее с более подходящей структурой.
Некоторые другие мысли
большие наборы данных
Если у вас очень большие наборы данных и большие результаты запросов, Cake может стать проблемой. Операция find () хочет вернуть ассоциативный массив, поэтому все строки читаются, анализируются и преобразуются в массивы. Если ваш набор результатов слишком велик, вам не хватит памяти. CakePHP не реализует объекты ResultSet, как и многие другие реализации Active Record, и это является определенным недостатком. В итоге вы вручную просматриваете свои данные с помощью подзапросов. Тьфу. Что подводит меня к следующему пункту:
Массивы
Научитесь любить их, потому что CakePHP любит. Все представляет собой массив, и часто они большие, сложные и глубокие. Это становится действительно раздражающим через некоторое время. Вы не можете добавлять функции в массивы, поэтому ваш код будет более грязным, чем если бы CakePHP использовал бы экземпляры вложенных объектов. Функции, которые вы можете добавить к этим объектам, помогут сохранить ваш код в чистоте.
странности и несоответствия
CakePHP спрятал в себе настоящие мерзкие мерзости. Если Active Record подходит вашему приложению, вы, вероятно, никогда не столкнетесь с ними, но если вы попытаетесь превратить CakePHP во что-то более сложное, вам придется с этим бороться. Некоторые примеры:
- HABTM через пользовательскую модель использует определение с другой стороны отношений, над которыми вы работаете.
- Некоторые действительно странные места, где ваши триггеры до / после не вызываются (например, не из updateAll)
- странное поведение Model-> field (). Это всегда запросы из базы данных. Поэтому будьте осторожны при обновлении данных модели без немедленного сохранения их в базе данных Некоторые функции CakePHP извлекают данные из Model -> $ _ data, а некоторые используют Model-> field (). Результат может быть совершенно другим, в результате чего будут очень трудно выявлять ошибки.
Короче говоря
Я бы настоятельно рекомендовал CakePHP даже для «больших» сайтов, если ваша модель домена хорошо вписывается в Active Record. Если нет, выберите другой каркас.