[Новичок] PHP OOP появились сомнения. Что делать и как быть?
Приветствую разработчиков!
Довольно давно занимаюсь программированием на PHP, но некоторое время назад попробовал Java, а затем C# и был в восторге от ООП и строгой типизации. Оттого и решил заняться "подтягиванием" знаний, решил так сказать, попробовать ООП в PHP. И вроде как даже получается, основные концепции ООП вроде как понимаю, паттерны так же, но со временем начали появляться вопросы с тем правильно ли я делаю или нет, знакомых гуру у меня нет поэтому решил попытаться с сообществом тостера.
1) Правильно ли это утверждение "не стоит применять паттерны абсолютно везде где пахнет малейшим ООП"?
2) Правильно ли для каждой элементарной сущности будь то комментарий, пост или пользователь создавать отдельный объект Comment, Post, User или File которые будут содержать в себе какую либо информацию для использования в обработчике. Например User в качестве аргумента конструктора AuthHandler или File в качестве аргумента одного из методов ImageHandler?
3) Сколько максимально стоит использовать аргументов для конструктора и для методов (чтобы было читабельно и "правильно")?
4) Правильно ли использовать связку менеджер базы данных -> элементарная сущность для каждой такой сущности: Например: class UserManager extends Db и class User (конструктор принимает UserManager и распихивает по полям данные. Ну или сама по себе сущность File в которую можем запихнуть бинарные данные (тут мы не ведем речь о базе данных)
1. Паттерны это просто примеры решения часто возникающих проблем. Если вы знаете много паттернов, то скорее всего не будете изобретать велосипед там, где не надо. Но всегда можно действовать по ситуации, потому что стандартные методы не покрывают все требования.
2. Смотря как вы будете с ними работать. Если сущности слишком элементарные, можно и общий объект-массив
3. Сложно сказать. Если вам кажется, что много - подумайте, можно ли передавать в качестве аргумента сразу объект. И имеет ли смысл создавать новый класс для этого. Иногда бывает достаточно сделать достаточно конструкторов, и иметь возможность указывать не все аргументы.