Удобная надстройка над нативным mysql_query   Итак, вы уже достаточно давно программируете на php, работаете с БД, добавляете, редактируете, удаляете. Когда делаете это, каждый раз прописываете одни и те же действия: подключение, выбор БД, запрос, выборки и т.д.

   Каждый раз Вы собираете запрос в отдельную переменную, экранируя все входные данные. непременно забывая это сделать с каким-нибудь числом, ведь кому придет в голову подать вместо ?id=123 что-нибудь вроде ?id=delete from ...

   Выборка из БД это тоже великое свершение. Вы делаете запрос, получаете какой-то непонятный контекст. Это не данные, а всего лишь ссылка на них. неясно, как и где они лежат. После прочтения мануала нам предлагают запустить цикл, и каждую его итерацию получать новую строку из БД.

   В цикле мы также можем выбирать данные различными способами: можем, как объект, тогда к каждому полю обращаемся так $row->id, есть функции которые возвращают ассоциативный массив, тогда обращаемся так $row['id'], а есть те которые просто возвращают массив данных.

   Вы написали программу. Мои поздравления! Она работает. данные крутятся. Вам даже сообщили, что в id можно подавать любые данные, и вы исправили этот баг, в двух местах, конечно забыв про третье. 

   Пришло время протестировать скрипт на хостинге клиента. Страшно сказать, но он ярый противник linux и apache, купил за большие деньги windows хостинг, с IIS и MsSQL. Ну что же, переписываем пару строк, понимаем, что отличий в работе прилично, и пишем все заново...

   Веселая перспектива не правда ли? 

Рассказать друзьям

При написании сложных систем на php, количество подключаемых файлов возрастает неимоверно. Подключать в лоб, все необходимые файлы, быстро надоедает. Да и такой способ сказывается на быстродействии скрипта. Ведь не для всех операций нужны все скрипты.

На помощь приходит встроенный в php механизм автозагрузки классов при их вызове.

Раньше мы делали так:



<?php 
include 'db.php';
$db = new db();
Рассказать друзьям

Техника синлетонов на php

Программистам php, приходится мириться с тем, что переменная объявленная в любом месте скрипта, не видна ни в одной из функций или методов.

Конечно, есть  ключевое слово global. Но вписывать туда  все используемые переменные очень проблематично, и захламляет код программы.

Поясню на примере:

Пусть есть класс db - обертка над стандартным mysql_query. И класс read_books, который может увеличивать количество просмотров определенной кники по его id.

В большинстве случаев используют такую конструкцию:

<?php 
class read_books{
	function __construct(){
		$this->db =  new db();
		$this->db->connect();
	}
	function f($id){
		$this->db->query('update books set hits=hits+1 where id='.$id);
	}
}
$rd = new read_books();
$rd->f(122);
Рассказать друзьям

  Автоматическое определение мобильных браузеров на PHPВпервые в своей практике, делал мобильную версию сайта. Должен скачать, что сделать сайт, который одинаково работал бы на огромном зоопарке мобильных браузеров,  задача не из легких. Однако, в этой статье речь пойдет не об этом.

   После того, как сайт был готов, возникла необходимость автоматически определять с какого типа устройств зашел пользователь, и отправлять его на соответствующую версию сайта. 

  Самый верный вариант: проверять возможности браузера при помощи js и затем перенаправлять. Но, это не подходит если мы не хотим чтобы пользователь грузил лишние килобайты, а автоматически был перенаправлен на нужную страничку. Поэтому требовалось серверное решение. 

Рассказать друзьям

К сожалению  в PHP нет аналога Javascript-конструкции (function() {})(); т.е. самовызов анонимной функции. Но его можно эмулировать, к примеру так: 



echo call_user_func(function() use ($vars){
	return 'Привет';
}).' Мир!!!';

очень удобная конструкция, не находите!?

Рассказать друзьям

Подкатегории

Все о разработке на фреймворке Yii