Недавно я взял на себя попытку освоить ОО-программирование. Прошло около 3 месяцев с тех пор, как я начал, но я думаю, что, возможно, я упускаю точку , потому что я, кажется, предпочитаю статические методы (которые кажутся мне "более простыми").
Пример
Вот как выглядит типичный запрос к БД в моем коде.
$bindings = array(':name'=>$articleName);
Db::query('SELECT id, name, title, image, content FROM ' . CONFIG_MYSQL_TABLE_PREFIX . 'articles WHERE name = :name LIMIT 1', $bindings);
А вот как я изменяю размер / обрезаю / кэширую изображения
$image = Img::thumbnail($imagePath, 200);
$imgHtml = '<img alt="' . $this->getTitle() . '" src="' . '' . $image['src'] . '" width="' . $image['width'] . '" height="' . $image['height'] . '" />';
Оба статических метода используют одноэлементный шаблон. Первый создает один объект PDO, а второй создает один класс ImageResize, который я нашел в коде Google.
Должны ли это быть 2 объекта, если я действительно хотел бы назвать это объектно-ориентированным программированием? т.е.
$db = new Db();
$image = new Image($src, $width, $height);
За каждый раз, когда я их использую? Я читал, что синглтоны тоже плохая идея, если они не используются для записи в файл. Но разве синглтон не подходит для одного соединения с БД, которое открывается и закрывается только тогда, когда оно используется и заканчивается?
У меня вопрос: я все еще застрял в процедурном мышлении, и если да, то, что я делаю, считается плохой практикой? Как я могу погрузиться в правильные ОО-модели мышления?
Обновление
Спасибо за ответы. Я нахожу оригинальные методы, которые я делаю, на проще , так как мне приходится набирать меньше кода и позволить статическим методам беспокоиться о мелочах реализации.
Я посмотрю на другой язык, чтобы получить полное представление о ОО, хотя этот язык и будет другим вопросом.