Обновил либу. Появилось несколько важных улучшений. Без поломки обратной совместимости не обошлось, потому следующая версия будет 1.0.0
Удален ResponseInterface, теперь метод handle() сервера возвращает json строку или null, если пришло уведомление. Стало гораздо удобнее. Без этого невозможно было ранее засунуть ответ к примеру в симфониевский Response или какой-либо другой.
Улучшена обработка ошибок. Столкнулся со странным багом, когда каким-то образом не отлавливались некоторые исключения в методе handle сервера. Причем наблюдался он только в связке с симфонией. Я так и не понял в чём конкретно причина такого поведения, но проблема была решена.
Добавлена поддержка пространств имен.
Пример для наглядности:
$app = new Application(['namespace' => new UserApplication()]);
// Client: {"jsonrpc": "2.0", "method": "namespace.method", "params": [1, 2, 3], "id": 1}Это позволит писать более сложные приложения с большим кол-вом методов. Ранее приходилось бы делать что-то вроде этого:
$userApp = new UserApplication();
$app = new Application(['namespace.method' => [$userApp, 'method'], // и т.д.]);Что не очень красиво и жутко неудобно.
А еще можно свободно писать вот так:
$userApp = new UserApplication();
$app = new Application(['namespace.method' => [$userApp, 'dot.separated']]);И метод в UserApplication будет dotSeparated или dotseparated, или Dotseparated, да как угодно. суть в том, что точки просто игнорируются, что придаёт больше гибкости.