@符号中的PHP注释被视为代码?

时间:2016-08-08 06:10:16

标签: php comments

所以我开始使用这个小库创建一个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实践吗?

2 个答案:

答案 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符号(@),后跟标记名称。在行的开头和标记的名称(包括符号)之间可能有一个或多个空格或制表符。