29
мая
2008
Предположим, у нас есть несколько классов, одинаковых по интерфейсу, но с различной реализацией методов (например это может быть классы для работы с БД для разных типов СУБД).
/path/default/class.php - класс CClassDefault
/path/other/class.php - класс CClassOther
Интересный прием для написания общего класса обертки - подмена $this:
class CClass
{
function CClass( $aParams, $sType='default' )
{
require_once( '/path/' . $sType . '/CClass.php');
$sClassName = 'CClass' . ucfirst( $sType );
$this = new $sClassName( $aParams );
}
}// end class CClass
Теперь мы можем вызывать классы вот так:
$oNewClass = new CClass( $aParams, 'default' ); // реально это будет объект CClassDefault
$oNewClass = new CClass( $aParams, 'other' ); // реально это будет объект CClassOther
рубрики: PHP, Программирование |
26
мая
2008
рубрики: Разное |
20
мая
2008
Поганец IE любит кэшировать результат выполнения AJAX запросов. Для того чтобы этого избежать, помогает вставка следующих строчек на стороне бэкенда:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
рубрики: PHP |
16
мая
2008
Недавнее нововведение на работе натолкнуло на мысль создать для своих проектов удобный профилировщик скриптов и SQL запросов. Чтобы не нарушать никаких копирайтов заведомо стал делать код с нуля.
Смысл профилировщика в том, чтобы, путем отметки контрольных точек в коде, подсчитать насколько долго выполняется участок кода между контрольными точками. Для профилирования скорости выполнения запросов контрольные точки ставятся до и после запроса.
Создал два файла:
autostart.php и autofinish.php
подключил в php.ini:
auto_prepend_file = "/путь до файла/autostart.php"
auto_append_file = "/путь до файла/autofinish.php"
Очень удобные, надо заметить, для таких случаев опции.
В файле autostart.php прописал несколько функций для расстановки контрольных точек и отображения результатов. Там же ставится первая контрольная точка, символизирующая начало загрузки файла.
В файле autofinish.php идет установка концевой контрольной точки и вывод результата.
Функции отрабатывают только в том случае, если внутри проекта выставляется константа PROJECT_DEBUG_MODE = true
Читать полностью »
рубрики: PHP, Программирование |
13
мая
2008
var o = 'hello world';
// выводит hello world
(function() {
alert(this);
}).call(o);
// выводит hello world каждые 5 секунд
window.setTimeout(function() {
(function() {
alert(this);
}).call(o);
}, 5000);
подсмотрено у гуру Дастина
рубрики: Программирование |