所以我开始使用这个小库创建一个RESTful PHP服务器,右here。
在代码中,我注意到评论看起来很重要,换句话说,如果我更改了注释,它实际上会改变代码的行为。这是正常做法吗?我之前从未见过这种情况,对我来说,不要忽视评论似乎很奇怪。
class TestController
{
/**
* Returns a JSON string object to the browser when hitting the root of the domain
*
* @url GET /
*/
public function test()
{
return "Hello World";
}
/**
* Logs in a user with the given username and password POSTed. Though true
* REST doesn't believe in sessions, it is often desirable for an AJAX server.
*
* @url POST /login
*/
public function login()
{
$username = $_POST['username'];
$password = $_POST['password']; //@todo remove since it is not needed anywhere
return array("success" => "Logged in " . $username);
}
/**
* Gets the user by id or current user
*
* @url GET /users/$id
* @url GET /users/current
*/
public function getUser($id = null)
{
// if ($id) {
// $user = User::load($id); // possible user loading method
// } else {
// $user = $_SESSION['user'];
// }
return array("id" => $id, "name" => null); // serializes object into JSON
}
基本上,@ url块实际上定义了URL调用它们下面的函数的请求类型。它的范围是什么,它必须是函数上方的@lines吗?这是标准的PHP实践吗?
答案 0 :(得分:1)
呃...是和否!
不,从某种意义上说,这不是一个普通的PHP功能。在PHP中,注释是注释,PHP不会尝试解析其内容。
是的,因为PHP不会解析注释,开发人员有时会将其用作存储数据库的地方。 Symfony框架就是一个很好的例子。
在这种情况下,您安装的库正在解析类RestServer.php
本身的注释。你可以自己阅读课程,虽然那里有一些非常好的PHP和Regex。
答案 1 :(得分:1)
这是PHP Doc。请参阅https://phpdoc.org/docs/latest/guides/docblocks.html,特别是https://phpdoc.org/docs/latest/guides/docblocks.html#tags
标记始终在新行上开头,其中包含at符号(@),后跟标记名称。在行的开头和标记的名称(包括符号)之间可能有一个或多个空格或制表符。