Форум → Программирование → Пыхнуть хотите? → Готовые решения → Обертка DBAL::Query - переменное число аргументов и экранирование строк
Обертка DBAL::Query - переменное число аргументов и экранирование строк
Страницы: ← Предыдущая страница • Следующая страница →
-
20 декабря 2008 г. 10:34, спустя 4 часа 12 минут 18 секунд
во, человек-дело :)
мне уже интересно :)
я скундантом хочу :)
выбирайте оружие:
- плётки
- сабли
- дубинки
- голова с мозгами
- голова без мозгов
на какую тему батл?все умрут, а я изумруд -
20 декабря 2008 г. 11:18, спустя 43 минуты 53 секунды
Батлы! Батлы!https://smappi.org/ - платформа по созданию API на все случаи жизни -
-
20 декабря 2008 г. 13:22, спустя 1 час 54 минуты 3 секунды
Хотите задачку!? получите, распишитесь!!!
Напишите класс SQLBuilder
описывать красиво не умею поэтому опишу интерфейсом
interface ISQLBuilder{
public function __construct();
public function addSelect($fields);
public function addTable($table, $join, $condition);
public function addWhere($conditions, $statement);
public function addOrder($column, $direction);
public function addLimit($limit, $offset);
public function getQuery();
public function __destruct();
}
смысл в том чтобы писать запросы так
$sqlb=new SQLBuilder();
$sql = $sqlb->addTable("myTable1")->addTable("myTable2","LEFT OUTER", "USING(myfield)")->addWhere("myTable1Column>0")->addOrder("myTable2Column", "DESC")->addLimit(15)->getQuery();
в результате надо получить запрос видаSELECT * FROM myTable1 LEFT OUTER JOIN myTable2 USING(myfield) WHERE myTable1.myTable1Column>0 ORDER BY myTable2.myTable2Column DESC LIMIT 15, 0
0. Иметь возможность указывать параметры в произвольном порядке
1. addSelect можно не указывать это приравнивается '*' а не 'myTable1.*, myTable2.*' но надо иметь возможность указать и такой вариант 'myTable1.*, myTable2.myTable2Column'
2. Надо учитывать что у коллонок myTable1Column и myTable2Column могут совпадать названия поэтому префикс таблицы обязателен
Передавать префикс через addSelect("myTable1.*") и addWhere("myTable1.myTable1Column>0") нельзя но можно передавать addWhere("myTable1Column>0", "AND", "myTable1") или через namespace на ваш выбор
С другой стороны нельзя использовать addWhere("myTable1Column>0", "AND", "myTable1") потому что может быть выражение типа addWhere("myTable1Column=myTable2Column"), нужно придумать способ это разруливать
3. addWhere должен принимать вложеные запросы
Остальная реализация на ваш выбор
При оценке учитываються параметры:
0. Корректность работы и устойчивость к ошибкам
1. ООП, тоесть никаких global и суперглобальных массивов использовать нельзя
2. Количество не включенных в интерфейс возможностей
3. Удобность, тоесть при минимальных передаваймых параметрах надо получать аксимум результата, поэтому пихать в каждую функцию имя таблицы не хорошо
4. Скорость работы
5. Оформление кода -
20 декабря 2008 г. 21:13, спустя 7 часов 51 минуту 12 секунд
sap, мне что снова тебя процитировать? там даже _рекомендации_ нет, есть описание новой возможности. так какого болта ты меня поучаешь?
Ты ослеп? Там вообще не написано такого, чтобы использовать в качестве конструктора функцию, у которой название совпадает с названием класса. Глаза разуй, там же ясно написано, цитирую:PHP 5 позволяет объявлять методы-конструкторы. Классы, в которых объявлен метод-констуктор, будут вызывать этот метод при каждом создании нового объекта, так что это может оказаться полезным, чтобы, например, инициализировать какое-либо состояние объекта перед его использованием.
Пример #1 Использование унифицированных конструкторов<?php
class BaseClass {
function __construct() {
print "Конструктор класса BaseClass\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "Конструктор класса SubClass\n";
}
}
$obj = new BaseClass();
$obj = new SubClass();
?>
Ты видишь здесь функцию с названием, которое совпадает с названием класса? Нет? Ах, какая жалость, что не написали два варианта на выбор с рекомендацией одного из них, а написали только один вариант. Какая тебе, нахрен, рекомендация еще надо, если старый вариант вообще не приводится в пример?я вызываю тебя на дуэль. выбирай задачу на php, которую реально сделать за неделю. пусть скунданты решат кто кого может учить.
У меня и так дел полно, чтобы со всякими закомплексованными личностями дуэли устраивать. Если тебе больше заняться нечем на зимних каникулах, иди в снежки поиграй, что ли. Впрочем, если ты мне оплатишь неделю труда по моим расценкам, я подумаю :) -
20 декабря 2008 г. 21:18, спустя 5 минут 16 секунд
И да, еще одно, ты пришел на форум. Не на свой форум, на чужой, где общаются другие люди. И вместо того, чтобы прислушаться к тому, что тебе советуют, ты начинаешь в ответ хамить, говорить маразм, причем не как собственное мнение, а как истину в последней инстанции, оскорбляешь других участников форума и делаешь вид, что ты тут самый крутой и самый умный. Я бы тебя вообще забанил за подобное поведение. -
20 декабря 2008 г. 21:25, спустя 6 минут 20 секунд
не злитесь, лучше застрелитесь!Сапожник без сапог -
-
20 декабря 2008 г. 22:14, спустя 11 минут 50 секунд
ыыы
так хочецца минус вкарму влепить… обоим
Чего не влепишь?)) (я не прошу, если что))) -
20 декабря 2008 г. 22:41, спустя 27 минут 9 секунд
типа "чо не влепишь дуду?" ))))))))))))))))))))))))
ыыы
так хочецца минус вкарму влепить… обоим
Чего не влепишь?)) (я не прошу, если что)))Сапожник без сапог -
20 декабря 2008 г. 22:45, спустя 4 минуты 3 секунды
патаму что ты прав, патаму что я иногда тоже кричу))) -
20 декабря 2008 г. 22:46, спустя 1 минуту 3 секунды
phpdude, эго свое умерь))) второй не ты, а артудету -
20 декабря 2008 г. 22:55, спустя 8 минут 48 секунд
жаль. думал мне) ну пох)))
phpdude, эго свое умерь))) второй не ты, а артудетуСапожник без сапог -
-
20 декабря 2008 г. 23:13, спустя 12 минут 18 секунд
типа "чо не влепишь дуду?" ))))))))))))))))))))))))
ыыы
так хочецца минус вкарму влепить… обоим
Чего не влепишь?)) (я не прошу, если что)))
Как тебе сказал Мавр, второй не ты))
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!