Увы, подход описанный в предыдущем посте оказался в неверным, т.к. не позволял делать полноценные выборки по родительским нодам. Например, невозможно было реализовать селектор :last или :even в запросе типа ".divClass:last input".
Пришлось вернуться к исходному перебору нод, начиная с родительских.
Юнико́д (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков.
Одновременно с появлением всемирной паутины, появилась необходимость создания единой всемирной кодировки, где каждому существующему символу был бы присвоен свой уникальный код. Такой кодировкой стал Юникод. К настоящему моменту Юникод покрывает все основные действующие языки мира и включает в себя коды около ста девяти тысяч символов.
Являясь одним из самых распространенных в мире серверных языков программирования, PHP до сих пор не имеет полноценной поддержки Юникода.
"Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure." (С) Fred Brooks
Предположим, у нас есть несколько классов, одинаковых по интерфейсу, но с различной реализацией методов (например это может быть классы для работы с БД для разных типов СУБД).
/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
Недавнее нововведение на работе натолкнуло на мысль создать для своих проектов удобный профилировщик скриптов и 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