Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Классы для обращения к мусикл.


Автор: Predator199 28.11.2012, 14:36
Многие пишут классы для обращения к мусикл. Ими я пока не пользуюсь. Скажите пожалуйста есть ли плюсы в них, кроме удобства.

Автор: Guedda 28.11.2012, 14:53
Смотря какие. 
В большинстве случаев да - менее сильная подверженность к SQL-injections и различных ошибок.

Автор: s0lman 28.11.2012, 15:00
Цитата(Predator199 @  28.11.2012,  13:36 Найти цитируемый пост)
кроме удобства



Цитата

- А что он тебе такого сделал?
- Как это - что? Майкрософт виндоуз он мне сделал.
- Ну?
- Что ну? - возмутился Сергей. - Тебе этого мало?

Автор: Arantir 28.11.2012, 15:12
Predator199, плюс первый: одна функция внутри себя содержит подключение, фильтрацию, запрос, преобразование в массив, отключение. Везде вызываешь не по 10 строчек, а по строчке 
Код

$array = DB::$get("SELECT...
Или еще круче
Код

$array = DB::$getUsers(); // например...
Влюс второй: Поменял БД - изменил пару строк в одном классе и все продолжает работать. А так вспоминай, какой там еще скрипт к БД конектится =)
Я бы даже строчку с коннектом в класс/функцию завернул. А то, хоть там все значения брались из конфига, однажды мне вздумалось удалить пару лишних строк в конфиге и переназвать пару перемеренных для удобства...

Добавлено через 7 минут и 23 секунды
Predator199, удобство, удобство. Именно в нем все дело. Удобство позволяет делать меньше ошибок. Меньше ошибок - больше времени, больше времени - качественней код... Ну и так по цепочке до необходимости добавлять глютамат натрия в черный чай.

Все стремятся все свести к нажатию пару кнопок. Собственно, даже те, кто сами эти кнопки создает. Это экономит время,  автоматизация (на относительно низком уровне) спасает от ошибок. На более высоком - тут саму автоматизацию еще без ошибок надо писать, но тем не менее.

Автор: Predator199 29.11.2012, 06:39
Спс. 

Код

$array = DB::$get("SELECT...
Или еще круче
$array = DB::$getUsers();

Чем второй вариант лучше?

Автор: Arantir 29.11.2012, 07:17
Predator199, слышали про инкапсуляцию? Есть такая штука в ООП.
Второй вариант будет лучше ровно настолько, насколько лучшим вы его сделаете =) Я привел всего-лишь набор буковок...

Ну первое преимущество - запрос только в одном месте прописан, внутри метода. 
Сайт - это такая вещь, которая на одном месте не стоит. Со временем вы просто будете вынуждены его совершенствовать, внешне и внутренне. Сделайте себе приятность и оставьте в будущем меньше работы =)

Автор: TwisT_X 29.11.2012, 11:51
Predator199, Вам надо хорошенько почитать азы ООП!!
Конечно лучше использовать классы для с БД.
А еще лучше использовать MVC. Тогда о безопасности голова будет меньше болеть.

Автор: ksnk 29.11.2012, 13:14
Цитата(TwisT_X @  29.11.2012,  11:51 Найти цитируемый пост)
А еще лучше использовать MVC

Как может mvc спасти от sql инъекции?

Автор: MoLeX 29.11.2012, 13:46
ТС не думай о вечном и великом, лучше хорошенько разберись с функциональным программированием, а только потом изучай ООП.
И не какие классы тебе сейчас не нужны, особенно готовые.
Если хочешь чему-то научиться - используй велосипеды, и пусть у твоего велика колеса будут квадратные но это твое и твои навыки

Автор: Guedda 29.11.2012, 13:53
Цитата(MoLeX @  29.11.2012,  14:46 Найти цитируемый пост)
разберись с функциональным программированием

http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5 - это немного не то. Не вводи человека в заблуждение ;) 
Возможно, ты имел ввиду http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D0%B4%D1%83%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5?

Автор: TwisT_X 29.11.2012, 16:10
ksnk, В MVC уже заранее разработчиками предусмотрена защита от инъекций.

Автор: baldina 29.11.2012, 16:24
Цитата(TwisT_X @  29.11.2012,  16:10 Найти цитируемый пост)
В MVC уже заранее разработчиками предусмотрена защита от инъекций

разработчиками чего? mvc это концепция, видимо вы её путаете с фреймворком

Автор: TwisT_X 29.11.2012, 16:47
baldina, Разве фреймворк != mvc ???

Автор: baldina 29.11.2012, 17:06
конечно нет. 
http://ru.wikipedia.org/wiki/Model-View-Controller
http://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA

Добавлено @ 17:08
фреймворк может реализовывать mvc (хотя совсем не обязательно, пример - http://silex.sensiolabs.org/)
mvc можно применять без фреймворка (например http://andreaslagerkvist.com/archives/2011/03/12/mvc-witout-a-framework/)

Автор: TwisT_X 30.11.2012, 10:27
baldina, в любом случае в MVC есть модель, которая будет отвечать за работу с базой данных ((:
А как она уже реализована ...

Автор: baldina 30.11.2012, 10:32
ранее вы утверждали, что
Цитата(TwisT_X @  29.11.2012,  16:10 Найти цитируемый пост)
В MVC уже заранее разработчиками предусмотрена защита от инъекций

 smile 

Автор: TwisT_X 30.11.2012, 11:00
baldina, Я работаю с ZF, CakePHP, CodeIgniter.
Это все фреймворки и MVC. И там защита от инъекций предусмотрена ((:

Автор: Guedda 30.11.2012, 11:10
Цитата(TwisT_X @  30.11.2012,  12:00 Найти цитируемый пост)
Это все фреймворки и MVC.

Вы неправильно выразились. Это всё фреймворки, которые используют схему/методологию MVC

Автор: TwisT_X 30.11.2012, 11:27
Guedda, согласен ((:
Извиняюсь.

Автор: Aliance 3.12.2012, 10:38
Цитата(TwisT_X @  30.11.2012,  12:00 Найти цитируемый пост)
И там защита от инъекций предусмотрена ((: 

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

Цитата(TwisT_X @  30.11.2012,  12:00 Найти цитируемый пост)
Это все фреймворки и MVC.

Фраза аналогична следующей: это все реки и табурет.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)