lexa@cutenews.ru
RSS
В начало страницы

PHP (4 заметки)

Пока, DbSimple. Привет, PDO

Ноябрь 2010, 12 @ 06:13 PHP

Переселил себя с DbSimple, на которой просидел достаточное время, на PDO. Точнее, переселил обёртку. В конечном интерфейсе ничего не поменялось.

Отказаться от плейсхолдеров DbSimple в пользу стандартных PDOшных полностью не смог, уж больно куцие какие-то. Поэтому спизданул регексп (я такой не осилю) и навоял надстройкой к PDO, заодно весь интерфейс слегка упростил.

Короче, красота.

Забавный баг

Ноябрь 2010, 11 @ 09:21 PHP 2 комментария

Забавный баг в PHP:
$a = 'a.1';
var_dump(++$a);

Отдаст "a.2".

Кто крут в PHP?

Октябрь 2010, 09 @ 09:23 PHP

var_dump((bool) print_r(${strrev('SLABOLG')} = 1, $GLOBALS[1]{1} == (unset) b"1") == "00");
У Болка. Это как бы сложный пример логики PHP.

В примере можно прочитать три вещи.

Первое, если вы его не осилили, то не прочтёте нихуя. Нихуя тоже результат, хотя противоположный реальному (true же не нихуя).

Если осилили, то откроется вполне очевидное: 1) PHP мягок и этим хорош; 2) кто-то слишком много выёбывается. Странно, что Болк не написал своё любимое "у нас в Яндексе".

ZendFramework

Август 2008, 21 @ 06:14 Мастерю PHP ZendFramework 2 комментария

ZendFramework - говно.

P.S. Zend_Service_Audioscrobbler тоже говно на кучу строк.

Мой шикарнейший вариант, короткий, как писька у японца:

<?
class Service_LastFM {

////////////////////////////////////////////////////////////////////////////////

    function __call($method, $params){
        list($type, $that) = explode('_', strtolower($method), 2);

        $url .= 'http://ws.audioscrobbler.com/1.0/';
        $url .= $type.'/'.urlencode($params[0]).'/';
        $url .= (is_string($params[1]) ? urlencode($params[1]).'/' : '');
        $url .= $that.'.xml';
        $url .= (is_array($query = end($params)) ? '?'.http_build_query($query) : '');

        $status = reset(get_headers($url));
        $status = trim(strstr($status, ' '));

        unset($this->error);

        if ($status == '200 OK')
            return simplexml_load_file($url);

        $this->error = $status;
    }

////////////////////////////////////////////////////////////////////////////////

}
?>

Пользовать так:

<?
$lastfm = new Service_LastFM;
  
print_r($lastfm->user_profile('RJ'));
  
print_r($lastfm->user_artistTags('RJ', array('artist' => 'Metallica')));
  
print_r($lastfm->track_artistTags('Metallica', 'Enter Sandman'));
  
print_r($lastfm->album_info('Metallica', 'Ride the Lightning'));
?>

И всяко разно.

В случае успеха класс вернёт SimpleXML обьект. В противном случае в переменной $lastfm->error будет хидер с ощибкой (400 Malformed API Call (пример этой ошибки), 404 Not Found и т.д.).