![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| newProgrammer |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 19.11.2008 Репутация: нет Всего: нет |
Всем доброго времени суток.
Сразу оговорюсь, что знания PHP у меня кое-какие есть, только с опытом напряг. Так что сильно не ругайтесь, а будет что сказать, внимательно выслушаю. Написал я тут пару классов для сайта по недвижимости и не знаю правильно ли я все делаю. Конечно все еще очень сыро, но не хотелось бы в начале наделать принципиальных ошибок, противоречащих ООП и PHP в целом. Вот и сам код:
А пользоваться этим можно так:
Подскажите пожалуйста что здесь нужно исправить или можно подправить. Заранее благодарю. |
||||
|
|||||
| Arch1S |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 14.1.2008 Где: Беларусь, Гомель Репутация: нет Всего: 3 |
переменые в функции select страноватые
вот к примеру моё рукаделие
|
|||
|
||||
| newProgrammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 19.11.2008 Репутация: нет Всего: нет |
||||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
newProgrammer, я бы на твоем месте не делал коннект к базе в конструкторе.
Сделай отдельные методы bool connect(string $server,string $port,string $usr,string $pwd); bool disconnect(); bool reconnect(); int exec(string $query) //returns count of affected rows string value(int $column) //if 'select |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
а у тебя он очень полезный, как я погляжу. не вижу ничего полезного, кроме как замена стандартных функций своими именами и некоторая автоматизация построения запроса update (хотя почему того же нет для insert - загадка, как и автоматизация экранирования mysql_real_escape_string). у newProgrammer, хотя бы возвращается массив после селекта правда, не понятно, а что больше ничего в классе нет? |
|||
|
||||
| Sentox |
|
|||
|
как то так ![]() ![]() Профиль Группа: Участник Сообщений: 392 Регистрация: 27.1.2009 Где: Зимбабве Репутация: 7 Всего: 7 |
Странно во первых видеть в классе оболочке к базе данных вшитый запрос!
Во вторых надо стремиться к меньшему числу дефолтовых аргументов в методах. Советую почитать про классы оболочки вокруг базы данных или при рефакторинге будет много неприятностей. Да и наследование в классах тоже придумали не просто так.Разбей на функциональность класс а потом используй его а не вшивай в него всю систему. Это сообщение отредактировал(а) Sentox - 15.2.2009, 22:59 |
|||
|
||||
| newProgrammer |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 19.11.2008 Репутация: нет Всего: нет |
Есть еще несколько методов в классе mysql, но я решил пока не выкладывать, т.к. на длинные посты редко когда отвечают, наверное, читать влом. Они написаны по этому же принципу - "$key => $val" пары передавать массивами. Например, так:
Правда, я еще не все продумал; вчера только начал писать. Хотелось бы написать что-то универсальное... Что касается дефолтовых аргументов, то, действительно, как-то некрасиво получается, а с другой стороны, когда надо выбрать из таблицы все без всяких условностей, то прийдется дописывать в параматры пустые кавычки. Насчет всего остального, мне надо почитать и разобраться что есть оболочки и рефакторинг. А так, спасибо за совет |
||||
|
|||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
сделай шаблон запросов как в mysqli.
тогда с твоим класом будет неудобно работать лучше передавать классу ссылку на Бд типа SetDB($db) GetDB() Мое мнение: Обертки для БД не очень mysqli круче. -------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Я вот такое юзаю
|
|||
|
||||
| Acer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
Потому, что может возникнуть исключительная ситуация и у тебя обьект умрет до своего создания. Я считаю не разумным писать методы типа select(), delete() и т.п для запросов. Ваши статические select'ы выполнят такой запрос?
|
||||
|
|||||
| newProgrammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 19.11.2008 Репутация: нет Всего: нет |
Acer
Нет, ну такие запросы конечно мой класс не потянет. Теперь-то я понимаю, что проще писать запрос полностью и через переменную вставлять в метод. Тогда действительно в таких методах как select, insert, update нет необходимости. А есть смысл писать такой класс для простеньких запросов? |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| Acer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 5.9.2007 Где: UA::DN Репутация: нет Всего: 8 |
По моему мнению, нужно стремиться к универсальности и оптимизации. А методы типа select() и т.п. с предопределенной структурой запросов - это просто для самоудовлетворения. |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
||||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
блин, ужас )
Оказывается мой класс был и не таким ужасным =) Только решение awers понравилось(кстати оно Zend_Db сильно отдает) =) Только вот смысла в этом нету: проще использовать более функциональный, отлаженный и поддерживаемый стандартный класс =) |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |