Что почитать в выходной

Статья «Одноклеточная собака-паразит» о самой маленькой породе собак в мире. Это возбудитель заболевания — трансмиссивной венерической саркомы у собак. Если просмотреть его гены и посчитать генетическое расстояние  от собак, то получится 0,08%, это примерно как между собаками разных пород или расами людей.

Тёма написал быстро разошедшуюся по интернетам статью «Русский дрист» о том почему в России так грязно на дорогах.

«Спутник-скафандр» — переводная статья с сайта НАСА о самом необычном спутнике, состоящем из старого скафандра, начинённого оборудованием. Он был запущен в 2006 году и принять его радиосигнал мог любой радиолюбитель на частоте 145,990 МГц. Передавалась информация о температуре, напряжении батарей и общем времени миссии.

12 комментариев

PHP 5.6alpha3

Я уже писал о том что появилось в ПХП 5.6. Четыре дня назад вышла новая альфа, а с её появлением в языке одним магическим методом стало больше. Добавился метод «__debugInfo», теперь он вызывается функцией var_dump выводится объект.

У объектов и ранее была возможность влиять на вывод этой функцией, но тогда это было доступно только для экземпляров, классы которых были написаны на Си, теперь же эта возможность есть в ПХП.

Пример использования:

class File {
  // «ресурс (поток)» — не очень-то информативно…
  private $fp;

  // …в отличие от его метаданных
  public function __debugInfo() {
    return $this->fp ? stream_get_meta_data($fp) : [];
  }

  public function open($filename, $mode = 'r'){
    $this->fp = fopen($filename, $mode);
  }  
}

$f = new File;
var_dump($f); // object(File)#1 { }
$f->open('http://php.net');
var_dump($f);
/*
object(File)#1 {
  ["wrapper_type"]=>
  string(4) "http"
  ["stream_type"]=>
  string(10) "tcp_socket"
  и так далее...
*/

Мне тут же стало интересно — можно ли сделать метод __debugInfo приватным? Оказывается нельзя, интерператор ругается:

Warning: The magic method __debugInfo() must have public visibility and cannot be static in /Users/bolk/example.php on line 3
object(Dumb)#1 (0) {
}

И, кстати, сразу нашёл баг — стоит в этом магическом методе вернуть себя же (массив, состоящий из переменной $this), как var_dump зацикливается, а если вернуть $GLOBALS получим Segmentation fault: 11.

В принципе, это закономерно — ведь это альфа-версия.

7 комментариев