Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中api的类属性可见性_Php_Api - Fatal编程技术网

php中api的类属性可见性

php中api的类属性可见性,php,api,Php,Api,我有一个带有私有属性的类任务和一些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;

我有一个带有私有属性的类任务和一些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());
        

    }
公共功能索引()
{
$taskManager=新建taskManager();
$tasks=$taskManager->selectWhere('parent_id为NULL');
foreach($key=>$task的任务){
$taskId=$task->getId();
$subtask=$taskManager->selectWhere(“父任务id=$taskId”);
$tasks[$key]->subtask=$subtask;
}
回声';
变量转储($tasks);
回声';
标题(“HTTP/1.1200已创建”);
标题('Content-Type:application/json');
返回json_encode($tasks->getDataForApi());
}
我正在使用postman测试我的api,如果我在works中公开所有属性,但我认为这不是一个好方法
我应该在课堂任务中公开所有这些属性吗?还是有其他解决方案?

这是否回答了您的问题@WesleySmith嗯,我的问题是将我的属性的private改为public这就是问题所在,如果您的类实现了
JsonSerializable
接口并提供了
jsonSerialize
方法,您可以完全控制类的JSON表示中包含哪些属性,而无需更改任何有关您的私有属性的内容和PHP将自动为集合中的每个class对象调用类的
jsonSerialize
方法,您可以从类中准确返回所需的内容,包括任何私有属性值,因为它是从类本身的上下文调用的,该类本身可以访问所有这些内容