Как перейти с процедурного на ООП

EJIqpEP

Новичок
Добрый день. Сейчас пишу на процедурном ООП небольшие скрипты
Пример скрипта ссылка
Хочу перейти писать на ооп, потому что код очень нечитабелен становится.
Хочу спросить совета, стоит ли использовать фреймворк для таких маленьких скриптов?
Просто свои велосипеды тоже писать не хочется. Но и юзать фреймворк ради малого обьема кода кажется нелогичным.
Спасибо за ответы!
 

Фанат

oncle terrible
Команда форума
ООП не является антонимом слова "говнокод".
если твой нынешний код переписать на ООП, он просто станет ещё запутаннее.

у тебя, кстати, и процедурности никакой нету.
я бы на твоем месте сначала поучился группировать повторно используемый код в функции (процедуры).
Ну, и вообще программированию поучиться, чтобы не было ужаса кромешного типа

PHP:
 $res0 = mysql_query("SELECT count(*) FROM `joomla_status` WHERE status='0'") or die(mysql_error());
  $row0 = mysql_fetch_row($res0);
  $res1 = mysql_query("SELECT count(*) FROM `joomla_status` WHERE status='1'") or die(mysql_error());
  $row1 = mysql_fetch_row($res1);
  $res2 = mysql_query("SELECT count(*) FROM `joomla_status` WHERE status='2'") or die(mysql_error());
  $row2 = mysql_fetch_row($res2);
  $res3 = mysql_query("SELECT count(*) FROM `joomla_status` WHERE status='3'") or die(mysql_error());
  $row3 = mysql_fetch_row($res3);
эта красота заменяется на одну строчку
PHP:
$stats = db_function("SELECT status,count(1) cnt FROM joomla_status GROUP BY status");
где db_function - это та самая процедура о которой я говорил, от процедурного программирования, которым у тебя и не пахнет
 

Фанат

oncle terrible
Команда форума
если переписать твой код осмысленно, то можно сократить его раз в 10.
а если вынести из него оформление (которого, вообще-то не должно там быть)- то и во все 50.
и сразу разбираться в нём станет легче.
безо всякого ООП
 

Фанат

oncle terrible
Команда форума
тебе не ООП надо учить, а массивы.
если ты сделаешь себе массивы $status и $class, то код сразу сократится в два раза, поскольку из него исчезнут ВСЕ ифы, в которых по 10 раз присваивается значение этим переменным.

унылые одинаковые запросы на апдейт тоже надо свести в один.
 

EJIqpEP

Новичок
Спасибо большое что потратили время на просмотр кода.
Все советы учту и буду стараться писать правильно.
Но все таки в вашем ответе интересующей меня информации о использовании фреймворков не увидел.
Такие скрипты не имеет смысла на них делать? Проще красивое, грамотное процедурное?
 

Фанат

oncle terrible
Команда форума
фреймворк тебе не поможет.
он не сделает твой код лучше.
ты просто размажешь по нему свой говнокод ровным слоем, в итоге просто увеличив его количество в 100 раз.
сначала тебе надо научиться программировать.
 

EJIqpEP

Новичок
договорились. завтра с утра исправлю и кину. Спасибо за потраченное время!
 

EJIqpEP

Новичок
Немного поисправлял. Пример с шаблонизацие смотрел, но до конца не понял как это реализовать. Может есть пример средний по сложности, чтобы разобраться как сделать правильно?
Функцию check_button в func.php так и не знаю как упростить, хотя там код повторяется. Что еще не так говорите, буду благодарен.
jstatus.php
func.php
 

AmdY

Пью пиво
Команда форума
а зачем пароль к бд и коннект в основном файле, а не скрыт в функциях?
 

EJIqpEP

Новичок
Исправлю. Просто хорошего кода не видел. У нас на работе тимлид пишет так как я писал сверху. У него и научился(
 

AmdY

Пью пиво
Команда форума
гихаб у вас приравняли к вконтактику и забанили?
 

Фанат

oncle terrible
Команда форума
мдаааааааааа........

смотри, что надо было делать с массивами.
массив - это индексированный список.
по индексу можно найти значение.

поэтому мы ОДИН раз делаем список.
PHP:
$ar_status[0] = "Не делался";
$ar_status[1] = "Слит";
а потом получаем значение по индексу одной строкой.
поэтому выкидываем на помойку функцию check_status() и вместо неё пишем
PHP:
$status = $ar_status[$row_check_status];
один раз на весь скрипт. один , а не в 10 местах.
то же самое со стилем.
понятно?
 

Фанат

oncle terrible
Команда форума
запрос на апдейт надо выполнять ОДИН раз.
у тебя все запросы одинаковые, отличаются только статусом.
неужели так сложно сообразить записать новый статус в переменную, а потом эту переменную подставить в запрос один раз?

почему ты по сто раз проверяешь check_status_in_base($id);? почему это нельзя сделать 1 раз?
 

Фанат

oncle terrible
Команда форума
чуваку, которого ты назвал "тимлидом" ты очень, очень сильно польстил.
 
  • Like
Реакции: scb
Сверху