foglcz / JSONRpc2

Generic JSON-RPC v2 implementation
Other
19 stars 10 forks source link

Nette database #20

Open rumcais opened 4 years ago

rumcais commented 4 years ago

Potřeboval bych poradit jak použít jsonrpc2 s nette database. Na jiném projektu jsem používal knihovnu dibi. A s tou to fungovalo bez problému. Můj příklad:

$server = new \Lightbulb\Json\Rpc2\Server; $server->situace = new SituaceHandler($this->kategorieModel); class SituaceHandler { public $kategorieModel; function __construct($kategorieModel) { $this->kategorieModel=$kategorieModel; } public function sendAllCategory() { $retval=$this->kategorieModel->getAllData()->order('position')->fetchAssoc('id'); $ret = new \stdClass(); $ret->result=$retval; return $ret; }

Server mi vrací: response: { jsonrpc : 2.0, error : { code : 0, message : fopen(/app/src/app/../temp/cache/_Nette.Database.f9984012521578c37f8a2419fc007bbe/_48509200295bca30224e85dbd33b9614): failed to open stream: No such file or directory\nin file /app/src/vendor/nette/caching/src/Caching/Storages/FileStorage.php\non line 298 }, id : 0 }

zabous commented 4 years ago

To není problém Nette Database, ale problém toho, že Nette Database využívá Nette\Caching\Storages\FileStorage, kde je oteviraní neexistujícího souboru ošetřeno pomocí tzv. error-control operatoru @

Viz na: https://github.com/nette/caching/blob/be02f7e597c61484cf75735370d2a3836984c82f/src/Caching/Storages/FileStorage.php#L298

Aby toto potlačení chyby fungovalo i ve vlastním error handleru, měla by v něm být tato řádka: if (error_reporting() === 0) { return false; }