Zzepish
24.12.2013 - 17:25
sergeiss
хм. Может ты и прав тут
paul85
24.12.2013 - 19:11
ИМХО MVC без ООП, ээээм... Мягко говоря не совсем удобно!
Ок, это ПИПЕЦ КАК НЕУДОБНО! =)
По теме. Как раз недавно встраивал парсер прайсов в И-нет магазин, написанный в стиле 90х. Ну что могу сказать? Занятие не для слабонервных... Вот уж точно, как говорит господин
twin: "телега впереди лошади". Попытался сворганить среди этого ада микро MVC (хотя какое там... Все равно что настоящий кофе сравнивать с кофейным напитком из автомата). Если интересно могу выложить - посмеетесь над моими потугами. =))
Но в том стиле я просто не смог себя заставить кодить. Увы...
sergeiss
24.12.2013 - 19:35
Цитата (paul85 @ 24.12.2013 - 19:11) |
MVC без ООП, ээээм... Мягко говоря не совсем удобно! |
Вот тут позволь не согласиться. Категорически причем.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
paul85, Каким местом вы хотели использовать mvc при постройке парсера о_О? Для этой цели подходит сhain of responsibility, по крайней мере для схожей задачи (парсинг хтмл сайта из много больше 100 страниц, на каждой 5-50 товаров с различной ценовой политикой)выбрал именно этот подход, и он полностью себя оправдал
paul85
24.12.2013 - 22:49
Цитата |
Каким местом вы хотели использовать mvc при постройке парсера о_О? Для этой цели подходит сhain of responsibility |
Там MVC для отображения всякой хрени. Ну типа загрузите файл... Верный/неверный формат. Ну такой мини-микро фреймворк. Даже что-то типа роутера присутствует. Все это безусловно смешно, но с хорошей фантазией именно так и выглядит. =)) Понятно, что сам парсинг никакого отношения к MVC не имеет...
Цитата |
Вот тут позволь не согласиться. Категорически причем. |
В чем именно? Что MVC на функциях неудобная вещь? Ну вот скажем есть модель foo в ней 10 методов. Каждому методу, естественно, нужен экземпляр mysqli. Так я в конструкторе обращаюсь к single tone и забираю для всей модели объект mysqli. Записываю его из конструктора в поле класса db и бед не знаю. Какой бы я метод не вызвал везде у меня $this->db. На процедурке же мне придется что делать? Либо объявлять в файле модели переменную, в которую записывать объект (в момент includ-а). Тогда в каждой функции потребуется писать global $db. Либо передавать в качестве параметра, но тут и вовсе непонятно как... Там обычно передаются из контроллера параметры. И контроллер ничего не должен знать о MySQLi.
И потом, если мы пишем в общем пространстве переменную с объектом MySQLi то она будет видна отовсюду. То есть нужен какой-то model_core что ли... Короче говоря вот в этом и заключается самое настоящее неудобство.
Ну мне так кажется...
sergeiss
24.12.2013 - 23:31
Цитата (paul85 @ 24.12.2013 - 22:49) |
На процедурке же мне придется что делать? |
Ну, например, в любом нужном месте писать
include_once 'connect_db.php';
Там, внутри этого файла, и прописывается коннект к базе. Никаких тебе глобалов не надо, кстати. По крайней мере, если у тебя только одна БД, то глобалов точно не нужно.
Цитата (paul85 @ 24.12.2013 - 22:49) |
И потом, если мы пишем в общем пространстве переменную с объектом MySQLi то она будет видна отовсюду. |
Если ты в ООП создаешь класс для соединения с БД, то он также должен быть доступен отовсюду.
Плюс ко всему... Использование классов - это еще не ООП!!! Ты можешь в процедурном программировании использовать класс для коннекта к БД :) ООП ты при этом не получишь. Но получишь удобство от использования класса.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Zzepish
25.12.2013 - 00:20
Блин! Я знаю, кем мне надо работать!
Нафиг программирование и прочие прелести! Буду подрабатывать тем, что буду делать холиварные темы на заказ)))
paul85
25.12.2013 - 01:45
Цитата |
Плюс ко всему... Использование классов - это еще не ООП!!! |
Ну singletone это паттерн ООП? Я хоть в этом-то прав? ))
Цитата |
Там, внутри этого файла, и прописывается коннект к базе. Никаких тебе глобалов не надо, кстати. |
Ну тогда это получается просто нечто на инклюдах. Даже затрудняюсь сказать что это за подход. Получается не класс-сущность, а файл-сущность. Много-много творим мелких файликов, среди которых через некоторое время тонем. Я так тоже программировал до классов. Подход лично мне показался несовсем удобным.
Потом перешел на ООП. Согласен, может быть там его и нет в рафинированном виде, а просто классы с элементами ООП. Паттерны: фабрика, синглтон, делегирование, стратегия... Я их все использую по мере необходимости. Но и они не в чистом виде...
Цитата |
Если ты в ООП создаешь класс для соединения с БД, то он также должен быть доступен отовсюду. |
Да, класс со статическими свойствами и методами. Я его называю config. В нем хранятся настройки подключения к БД, методы для инициализации классов, таких как Smarty и goDB, через синглтоны... Очень удобно! Но не только это... Можно использовать и другие замечательные фишки, такие как autoload и не инклюдить просто так лишние тяжелые библии. Например мне для класса AJAX нафиг не нужен Smarty...
Ну и в конце концов Zzepish прав. Мы просто сейчас упадем в самый жесточайших холивар ООП vs процедурка. Я по этому поводу придерживаюсь такого мнения: всё нужно. И лопата и вилы... Но кому-то удобно копать грядки вилами, а кому-то лопатой и с этим можно спорить до бесконечности. Одни будут говорить лопатой быстрее, а другие, что вилами не перерубаем сорняки и в итоге экономим время на "выборке". =)
Zzepish
25.12.2013 - 01:49
paul85так оно и есть! Дело вкуса.
Не мог бы ты еще глянуть в тему про оптимизацию запроса? у меня там еще вопрос
inpost
25.12.2013 - 02:02
Zzepishа если оно мне в принципе не нравится?
- Не нравятся кошки? Да вы просто не умеете их готовить.
сам стиль написания.
- Стиль? И часто ты видишь ООП хороший?
Опять -же общие понятия я имею. Мне этого достаточно.
- В том то и дело, то, что ты можешь называть ООП - является быдлокодом ООП, так как ты его не знаешь толком. Учесть, что ты в кругу ООП-программистов не тусуешься, то нормального кода ты практически не видишь, отсюда говорить о том, что всё это плохо - глупо. Не надо спорить по поводу тех вещей, в которых не разбираешься ты.
Мне сама архитектура не нравится
- Архитектура ООП? Это как?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Zzepish
25.12.2013 - 02:06
Цитата |
- В том то и дело, то, что ты можешь называть ООП - является быдлокодом ООП, так как ты его не знаешь толком. Учесть, что ты в кругу ООП-программистов не тусуешься, то нормального кода ты практически не видишь, отсюда говорить о том, что всё это плохо - глупо. Не надо спорить по поводу тех вещей, в которых не разбираешься ты. |
МОжет ты и прав. Я просто смотрел пару CMS и меня отпугнул ООП.
Цитата |
Мне сама архитектура не нравится - Архитектура ООП? Это как? |
Стиль написания (хотя это может зависит и от программиста (смотри мой ответ несколькими строчками выше)
inpost
25.12.2013 - 02:13
ZzepishО каких CMS говоришь, где используется ООП на должном уровне?
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
killer8080
25.12.2013 - 16:50
Цитата (paul85 @ 24.12.2013 - 23:45) |
Ну singletone это паттерн ООП? Я хоть в этом-то прав? )) |
singleton это design pattern, т.е. шаблон проектирования, не посредственно к парадигме программирования он отношения не имеет.
Вот например синглтон без класса
function get_mysqli($config) {
static $mysqli;
if(!$mysqli)
$mysqli = new Mysqli($config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name']);
return $mysqli;
}
killer8080
А разве не случайно синглтон проектируют так, чтоб нельзя было модифицировать или сделать клон.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
killer8080
25.12.2013 - 17:29
ABC
mysqli клонировать нельзя
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.