Форум → Программирование → PHP для идиотов → Глобальные переменные
Глобальные переменные
Страницы: ← Предыдущая страница • Следующая страница →
-
17 марта 2010 г. 23:45, спустя 5 минут 23 секунды
Плейсхолдеры конечно рассматриваю как вариант, если не получится сделать так, как хочу.
Но все же склоняюсь к функциям обработки для разных типов. -
18 марта 2010 г. 0:40, спустя 55 минут 39 секунд
SpartakuS, нельзя сразу предвидеть все виды запросов и все исключительные ситуации. Я думаю ты найдешь решение, либо благодаря своему, либо чужому опыту.
Сначала, сделай как можешь, потом переделай и так далее, сам знаешь -
18 марта 2010 г. 1:19, спустя 38 минут 12 секунд
SpartakuS, ну а как ты хотел бы чтоб система поняла какие именно переменные делать "глобальными" для тебя? Ты же их все равно в функцию закидываешь. Только вместо того, чтоб кидать их в одну функцию с обработкой запроса, ты их кидаешь в отдельную функцию. Получается две функции вместо одной. И в чем выгода?
п.с. Да, именно плейсхолдеры и нужно изать, если больше ничего не придумал.
п.с.2 Мне больше по душе СКЛ-билдер, по подобию встроенного в CodeIgniter. -
18 марта 2010 г. 1:49, спустя 30 минут 12 секунд
п.с.2 Мне больше по душе СКЛ-билдер, по подобию встроенного в CodeIgniter.
тот что активрекордом звётся там? -
18 марта 2010 г. 2:11, спустя 22 минуты
Givi, щас с браузера напишу как я хотел.
Есть запрос:
$name = 'SpartakuS';
$id = '823';
$db->query('DELETE FROM `user` WHERE `name` = $name AND `id` = $id');
Не придерайтесь к запросу, я понимаю, что по смыслу он ебланский. Просто первое, что пришло в голову.
Далее функция.
public function query ($query)
{
//тут выполняем запрос.
//так как параметр в одинарных кавычках, то у нас все переменные прийдут не заменяясь на их значения.
//парсим запрос, забираем список переменных. В программе они у нас заданы, в функции мы их не видим.
//вот что придумал я
$pattern = "/\\$([a-z_]{1}[-a-z0-9_]*)/i"; //ищем переменные. регулярку не отлаживал, не придерайтесь
preg_match_all ($pattern, $query, $vars); //юзаем регулярку
foreach ($vars[1] as $var) //имена переменных записываем в $var. У нас $var=='id' и $var == 'name'
{
global $$var; //добавляем в глобал найденные переменные
}
//Теперь переменные $id и $name доступны здесь и равны 823 и SpartakuS соответственно.
//Делаем пару манипуляций над запросом и наш запрос становится безопасным
}
А если вызвать эту функцию в другой функции. К примеру$user->delete(823);
////////////////////////////////
public function delete ($userid)
{
$id = $userid;
$db->query('DELETE FROM `user` WHERE `id` = $id');
}
То в функции $db->query $id мы уже не увидим. Не смотря на глобал. -
18 марта 2010 г. 9:24, спустя 7 часов 13 минут 24 секунды
пля, область видимости знаем что такое?
твой код будет делать так:
$id = 'admin_id_here';
$user->delete(823);
public function delete ($userid)
{
$id = $userid;
// kill da admin, mazafaka!!!
$db->query('DELETE FROM `user` WHERE `id` = $id');
}
Прикольно, не правда ли?Work, buy, consume, die -
18 марта 2010 г. 11:03, спустя 1 час 38 минут 41 секунду
SpartakuS, я понял что примерно ты хотел получить.
1. У тебя получается такая картина: если ты переменную id получаешь не напрямую, а откудато (с функции или с БД или пофиг откуда), то в коде, вместо того, чтоб написать примерно следующее:$db->query('SELECT * FROM `table` WHERE id='.$id,array($_POST['id']));
//array($_POST['id'] - массив с переменными для формирования запроса
ты вынужден вписать лишнее присвоение:$id = $_POST['id']; // $id = $mysql_result['id'] или другое подобное
$db->query('SELECT * FROM `table` WHERE id='.$id);
И вроде как памяти 5-ка пыхи не жрет уже, но код становится говнистее визуально
2. Использовать глобалсы - это уже ппц как нехорошо, если юзать их "направо и налево".
Больше ничего сказать конкретного не могу, но мне это идея не очень нравится, учитывая что ты "не контролируешь" полностью что попадает в функцию с запросом. -
18 марта 2010 г. 11:06, спустя 3 минуты 14 секунд
SpartakuS
короче вообще херовая затея, ужасно неудобно. Просто это уже не велосипед, а колесо. За все года PHP уже давно придумали как удобно и имя ему плейсхолдеры )) -
18 марта 2010 г. 11:22, спустя 16 минут 2 секунды
придумали это не в пхп, а когда плейсхолдеры придумали, пхп еще был и правда "для домашних страничек" … пхп это реализоваывали полвека, если бы то было сразу, не появилась бы куча библиотек для работы с базой, ибо нативно этопиздец
SpartakuS
короче вообще херовая затея, ужасно неудобно. Просто это уже не велосипед, а колесо. За все года PHP уже давно придумали как удобно и имя ему плейсхолдеры ))Спустя 82 сек.http://exler.ru/blog/item/7727/Спустя 11 сек.не туда)Сапожник без сапог -
18 марта 2010 г. 12:37, спустя 1 час 15 минут 8 секунд
phpdude, у экслера закодирован текст"іосмотрел эту запись уфологической передачи - и просто кровь застvла в венах и артери х. T жилах не застvла, по жилvм кровь не ходит. =о сіжет действительно страшнvй. іила дама-уфолог вvводила на принтер своі статьі, а там вместо статьи - і+TTL=L+ +T L=+іTL=+T-=! іосмотрите, это ведь не шутка - все правда! +на даже что-то попvталась расшифровать. =о, конечно, пройдет много лет прежде чем ученvе сумеіт прочитать загадочнуі ASCII-клинопись."
ιιlllιlllι унц-унц -
18 марта 2010 г. 12:54, спустя 16 минут 28 секунд
artoodetoo, http://www.artlebedev.ru/tools/decoder/ рулит?https://smappi.org/ - платформа по созданию API на все случаи жизни -
18 марта 2010 г. 13:16, спустя 22 минуты 23 секунды
Naaayh, я это понял. Если бы этого не было, то я бы и тему не создавал.
В общем не катит эта идея и для меня. Изначально я не помнил про массивы. Еще вера вспомнил. И всетаки плейсхолдеры не рулят. Ну да ладно). Всем спасибо) -
18 марта 2010 г. 14:30, спустя 1 час 13 минут 53 секунды
SpartakuS
попробуй 'DELETE FROM `user` WHERE `id` = $id' сделать с передачей массива и парсингом конечных автоматовСпустя 251 сек.конечным автоматом -
18 марта 2010 г. 14:58, спустя 28 минут 2 секунды
adw0rd, нет. я пользуюсь Far Manager 2. он умеет переключать кодировкиιιlllιlllι унц-унц -
18 марта 2010 г. 15:34, спустя 35 минут 33 секунды
А, ясно, прикладной софт рулит…. аля всякие "штрилитцы" и "бреды"https://smappi.org/ - платформа по созданию API на все случаи жизни
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!