首页 > 解决方案 > php中api的类属性可见性

问题描述

我有具有私有属性的类 Task 和一些 getter/setter

class Task
{
    private $id;
    private $title;
    private $done;
    private $user_id;
    private $parent_id;


    /**
     * @return int
     */
    public function getId(): int
    {
        return $this->id;
    }

    /**
     * @param mixed $id
     *
     * @return Task
     */
    public function setId($id): Task
    {
        $this->id = $id;

        return $this;
    }

    /**
     * @return mixed
     */
    public function getTitle(): string
    {
        return $this->title;
    }

    /**
     * @param mixed $title
     *
     * @return Task
     */
    public function setTitle($title):Task
    {
        $this->title = $title;

        return $this;
    }

    /**
     * @return mixed
     */
    public function getDone(): bool
    {
        return $this->done;
    }

    /**
     * @param mixed $done
     *
     * @return Task
     */
    public function setDone($done):Task
    {
        $this->done = $done;

        return $this;
    }

    /**
     * @return mixed
     */
    public function getUserId(): string
    {
        return $this->user_id;
    }

    /**
     * @param mixed $done
     *
     * @return Task
     */
    public function setUserId($user_id):Task
    {
        $this->user_id = $user_id;

        return $this;
    }

    /**
     * @return mixed
     */
    public function getParentId(): string
    {
        return $this->parent_id;
    }

    /**
     * @param mixed $done
     *
     * @return Task
     */
    public function setParentId($parent_id):Task
    {
        $this->parent_id = $parent_id;

        return $this;
    }

}

而且我想公开所有这些属性(我正在尝试制作一个api)这里以此类的用法为例

    public function index()
    {
        $taskManager = new TaskManager();

        $tasks = $taskManager->selectWhere('parent_id IS NULL');

        foreach ($tasks as $key => $task){

            $taskId = $task->getId();
            $subtask = $taskManager->selectWhere("parent_id = $taskId");
            $tasks[$key]->subtasks = $subtask;

        }

        echo '<pre>';
        var_dump($tasks);
        echo '</pre>';

        
        header('HTTP/1.1 200 Created');
        header('Content-Type:application/json');
        return json_encode($tasks->getDataForApi());
        

    }

我正在使用邮递员来测试我的 api,如果我在作品中公开所有属性,但我认为这不是一个好方法我应该在我的类 Task 中公开所有这些属性吗?还是有其他解决方案?

标签: phpapi

解决方案


推荐阅读