Показаны сообщения с ярлыком php. Показать все сообщения
Показаны сообщения с ярлыком php. Показать все сообщения

Duna HD: поиск тайных знаний

Некоторое время назад я стал счастливым обладателем медиаплейера Dune HD TV102. Зная, что внутри у этой приставки Linux, естественно мне захотелось посмотреть на это чудо изнутри. Не разобрать на части, конечно, а посмотреть как устроено программное обеспечение и вообще система. Кроме того,  дюна поддерживает подключение плагинов, почему-бы не разработать какое-нибудь полезное расширение для этой приставки?

Универсальный конструктор класса для PHP4 и PHP5

Редко приходится работать с PHP, но всё-же иногда приходится. Чуть не сошёл с ума в попытке найти ошибку в чужом коде. На тестовой системе всё летало, а на боевой,- пустая страница. Закономерно оказалось, что версии PHP на тестовом и боевом серверах разные, а в коде используются классы с объявленными конструкторами в стиле PHP5. PHP4 про то, что нужно вызывать метод __construct() в качестве конструктора ничего не знает, пришлось уговаривать ;-)

В самом общем случае вариант универсального конструктора класса (для 4-й и 5-й версии PHP) выглядит вот так:

class Foo{
# конструктор для всех версий
function __construct($arg){
# сделать что-нибудь при создании объекта
}
# конструктор для PHP < 5.0
function Foo($arg){
# сюда мы попадаем по умолчанию в ранних версиях PHP
if(version_compare(PHP_VERSION,"5.0.0","<")){
# вызываем конструктор
$this->__construct($arg);
# регистрируем деструктор
register_shutdown_function(array($this,"__destruct"));
}
}
# деструктор для всех версий
function __destruct(){
# сделать что-нибудь перед уничтожением объекта
}
}
?>

Дебаг PHP (в errorlog apache)

phpИногда возникает задача по-быстрому поправить что-то в PHP скриптах на сервере прямо из консоли. Если всё удаётся с первой попытки,- честь и хвала, а если нет? Часто бывает так, что страница просто перестаёт открываться, или на месте ожидаемого блока с текстом или картинки ничего нет. В этом случае поможет стандартная функция php error_log():

error_log('текстовое сообщение'); # записать в apache error.log

Не забудьте после отладки удалить (или закомментировать) все отладочные сообщения
Используя error_log можно быстро "на коленке" отладить небольшие изменения. А для больших проектов надо использовать что-то посерьёзнее, чем консоль, например Geany IDE