Это мой первый вопрос после нескольких лет нахождения хороших ответов здесь. Я перекодирую одну из моих работ, пытаясь использовать более глубокий уровень OOP aproach, но я не знаю, правильно ли я делаю то, что я делаю.PHP crud abstraction methods
Что я пытаюсь сделать, это простое создание продукта, но достаточно абстрактное, чтобы другие кодеры не знали, что использовать db, или как действительные данные продукта. Просто попробуйте создать ($ attr) метод вроде.
Это базовая схема кода.
abstract class Crud_model_abstract {
# private vars
# getter for private vars
# setter for private vars
# some basic methods
}
class Product_model_crud extends Crud_model_abstract {
# private vars
# getter for private vars
# setter for private vars
# CRUD methods (using phpactiverecord.com lib)
}
Тогда некоторые классы для категории, марки и т.д. с той же структурой, чем Product_model_crud
Теперь мой вопрос заключается в следующем: Должен ли я создать другую модель, cлагающими фактический продукт (добавить в категорию это таблица, то бренд к его таблице ... затем создайте продукт и сохраните его), а затем вызовите эту модель из контроллера, передающего параметры, или я должен преобразовать эту большую модель (ту, которая составляет продукт) вместо контроллера.
Я верю, что я должен создать большую модель, но на данный момент я не уверен ни о чем. Я прочитал много о хороших практиках в ООП, и у меня есть сомнения на каждом шагу: D
Что я понимаю (исправьте, если я ошибаюсь), что у меня должно быть достаточно слоев в мой код, чтобы сделать его более чистым и конкретным. Но в некоторых случаях я не вижу, когда этого достаточно.
Возможно, это глупый вопрос (конечно !!), но я не знаю, какого черта я делаю больше! Спасибо вам!
Я найти его трудно понять вашу проблему – Galen
Вопрос в том, насколько глубоко я должен пойти в абстракции. Должен ли я создать модель, которая создает весь объект (создать категорию, бренд и т. Д.), Или вся эта логика должна находиться внутри установленного контроллера. – gdi
Прочтите еще одну статью о ООП: http://www.advantexllc.com/blog/post.cfm/how-oo-almost-destroyed-my-business :) Кстати, вы считали, что используете Doctrine/Propel/phpactiverecord/что-нибудь еще ? – biziclop