
这个小框架适合写一些业务不那么重的小工具,简单快速,直接。自己把它用在 BAE 上放一些自己的服务。贴一下 readme 吧。
composer require jswh/rpc <?php require __DIR__ . '/vendor/autoload.php'; $app = new \RPC\Application('Api'); echo $app->run(); <?php namesapce Api; class Hello { /** * @httpMethod GET * @param string $name * @return void */ public function hello($name) { return 'Hello ' . $name . ' !' } } php -S localhost:8000 index.php http://localhost:8000/Hello.hello?name=world <?php class MyParser implements RPC\interfaces\ProcedureParser { public function parse($path) { preg_match("/(\w+)\.(\w+)$/", $_SERVER['REQUEST_URI'], $matches); if (count($matches) !== 3) { return null; } $p = new Procedure('MyApi', $matches[1], $matches[2]); return $p; } } <?php Annotation::registerMeta('method', 'GET|PUT|POST'); $parser = new MyParser $procedure = $parser->parse(null); $annotation = new Annotation($procedure->getClass(), $procedure->method); $method = $annotation->meta('method'); if ($method && $method !== $_SERVER['HTTP_METHOD']) { header('', true, 404); } else { if ($method === "GET") { $params = $_GET; } else { $params = array_merge($_POST, $_GET); } header('Content-Type: application/json'); return json_encode($procedure->call($params)); }