我遇到了问题。我有两个PHP文件,每个文件用对象回显一个json_encode()
数组(一个用户数组和一个奖励数组)。但是,当用户返回[{},{},{}]
这是 users.php
<?php
header('Content-Type: application/json');
require('../logic/User.php');
require('../database/Database.php');
$database = new Database();
if(isset($_GET['id'])) {
$user = $database->getUserById($_GET['id']);
if($user != false){
echo json_encode($user);
}else{
echo 'User not found';
}
}else {
$users = $database->getUsers();
echo json_encode($users);
}
?>
这是用户类(没有魔术方法):
class User implements JsonSerializable
{
private $id;
private $name;
private $birthday;
private $gender;
private $address;
private $postalcode;
private $phonenr;
private $email;
private $facebookid;
private $accessible = array('id', 'name', 'birthday', 'gender', 'address', 'postalcode', 'phonenr', 'email', 'facebookid');
private $editable = array('name', 'birthday', 'gender', 'address', 'postalcode', 'phonenr', 'email', 'facebookid');
private $required = array('id', 'name');
//getter, setter, constructor
public function jsonSerialize(){
return ['id' => $this->id,
'name'=>$this->name,
'birthday'=>$this->birthday,
'gender'=>$this->gender,
'address'=>$this->address,
'postalcode'=>$this->postalcode,
'phonenr'=>$this->phonenr,
'email'=>$this->email,
'facebookid'=>$this->facebookid
];
}
}
$ users 已填写,因此问题必须是json_encode()
答案 0 :(得分:0)
因为用户属性是私有的。 如果你将它们公之于众,它们就会显示出来。
然而,决定是否要将它们更改为公开,因为它们可能是私有的。