php - 为什么实例化后我的 php 对象成员变量为空?
问题描述
我正在尝试在 php 中创建一个 api。在这一部分中,我查询我的数据库并将数据加载到chuckquote 对象中,然后将这些对象添加到要以json 编码的数组中,并在应用程序发送获取请求时接收。当我回显查询结果时,一切都很好,但是如果我在它被实例化后立即回显 id,它的东西就完全不同了,当我对数组进行编码时,一切都是 NULL,并且现在有第 5 个空白行包含日期。我该如何解决这个问题,或者至少我在这里做错了什么?
if($method == "GET")
{
$sql = "SELECT * FROM chuckquotes";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
//echo " " . $row["ID"] . " " . $row["quote"] . " " . $row["author"] . " " . $row["datentime"] . " " ;
$crow = new chuckquote;
echo $crow->$id = $row["ID"];
$crow->$quote = $row["quote"];
$crow->$author = $row["author"];
$crow->$date = $row["datentime"];
$Jsonarray[] = $crow;
}
echo json_encode($Jsonarray);
}
else
{
echo "0 results";
}
$conn->close();
}
班级
class chuckquote
{
public $id;
public $quote;
public $author;
public $date;
}
输出:
[{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"},{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"},{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"},{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"}]
解决方案
从属性名称中删除$
符号。从
echo $crow->$id = $row["ID"];
$crow->$quote = $row["quote"];
$crow->$author = $row["author"];
$crow->$date = $row["datentime"];
至
$crow->id = $row["ID"];
$crow->quote = $row["quote"];
$crow->author = $row["author"];
$crow->date = $row["datentime"];
$
在 php 中,访问类属性时不需要使用符号。
尽管为此分配创建构造函数是最佳实践。带有构造函数的示例类。
class chuckquote
{
public $id;
public $quote;
public $author;
public $date;
/**
* chuckquote constructor.
* @param $id
* @param $quote
* @param $author
* @param $date
*/
public function __construct($id, $quote, $author, $date)
{
$this->id = $id;
$this->quote = $quote;
$this->author = $author;
$this->date = $date;
}
}
然后您可以在实例化类时分配值。
$crow = new chuckquote($row["ID"], $row["quote"], $row["author"], $row["datentime"]);
推荐阅读
- javascript - Apollo GraphQL updateQuery 到 typePolicy
- javascript - 使用可排序的 jquery UI 对多个 UL 和 LI 元素进行排序
- laravel - 我的第一个带有 Docker 的 Laravel 开发环境的权限问题
- java - Iterator和Listiterator的迭代器规则是否不同?(Java)
- eclipse - 通过ant插件生成类时Eclipse构建工作区循环
- java - 当我单击“再次播放”按钮时,我的整个应用程序崩溃
- python - Python:获取 concurrent.futures 执行程序以等待 done_callbacks 完成
- php - 订购特定产品后发送带有用户凭据的自定义 WooCommerce 邮件
- android - 使用片段和导航组件泄漏的nestedscrollView
- pdf - 如何解码PDF文件并将其编码回来?