| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Никита Козин 17.05.2005 12:45 / 17.05.2005 12:46
Почему бы не передавать классу объект SQL из примеров?@init[params]
# нам ОБЯЗАТЕЛЬНО должны должны передать объект, через который будут делаться все sql-запросы
^if(def $params.csql){
$csql[$params.csql]
}{
^throw[shop;Initialization failure. ^$.csql option MUST be specified.]
}
# end @init[]
# непосредственно место, откуда происходит инициализация класса:
@USE
mysql.p
shop.p
@auto[]
$SQL.connect-string[mysql://user:password@server/table]
$MAIN:pSQL[^mysql::init[$SQL.connect-string]]
^MAIN:pSQL.server{
$shop[
^shop::init[
$.csql[$MAIN:pSQL]
]
]
}
# end @auto[]Теперь подключение будет происходить так: @install[]
^csql.void{
CREATE TABLE IF NOT EXISTS ...
}
# end @install[]Дальше, зачем проверять чему равен action:^if($action eq "add"){
^if(def $cat_id){
^if(def $quantity){
^connect[$self.connect]{
^void:sql{INSERT INTO basket (cat_id, quantity, user_id) VALUES ('^taint[sql][$cat_id]', '^taint[sql][$quantity]', '^taint[sql][$self.user_id]')}
^self.event.append{is_bas_add}
}
}
}
}
############################
@bas_add[cat_id;quantity]
^if((def $cat_id && ^cat_id.int(0) != 0) && (def $quantity && ^quantity.int(0) != 0)){
^csql.void{
INSERT INTO
basket (
cat_id,
quantity,
user_id
)
VALUES (
$cat_id,
$quantity,
$self.user_id
)
^rem{ *** Не нужно делать никаких taint-ов, парсер их сам сделает при работе с базой *** }
^rem{ *** К тому же если мы вставляем только цифры - что тэйнтить? *** }
}
}
# end @bas_add[]
Ну и остальные методы по анологии вроде бы. Это то, что бросилось. Да, кстати, зачем объявлять перепенные как $self.[переменная]?.. Пусть они и остаются внутри класса.