【发布时间】:2018-01-29 09:56:08
【问题描述】:
我学习了这门关于 PHP 的课程,但我真的迷失了这一点。关键是能够使用类来操作日期。
<?php
ini_set('display_errors', 'On');
// Create a class called user
class User {
protected $dates = [
'created',
];
// This is supposed to convert my dates from a string to an object
public function __construct() {
foreach($this->$dates AS $date) {
$property = $this->{$date};
$this->{$date} = new DateTime($property);
}
}
// Adding a public function that will be available outsite of the class
public function getFullName() {
return "{$this->firstname} {$this->lastname}";
}
}
$db = new PDO('mysql:host=127.0.0.1;dbname=pdo', 'root', '');
$req = $db->query("SELECT * FROM users");
$req->setFetchMode(PDO::FETCH_CLASS, 'User');
echo '<pre>', var_dump($req->fetch()), '</pre>';
die();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>PDO</title>
</head>
<body>
<?php while($user = $req->fetch()): ?>
<div class="user">
<h4><?php echo $user->getFullName(); ?></h4>
<p>Registered on <?php echo $user->created->format('d M Y'); ?></p> <!-- does not work -->
</div>
<?php endwhile; ?>
</body>
</html>
当我加载页面时,出现三个错误:
注意:未定义的变量:日期在 /Applications/XAMPP/xamppfiles/htdocs/Side-Projects/Courses/PHP:SQL/Learn PHP 从零开始编程/04 - PHP 数据对象 (PDO)/51 - 用户 第 13 行的类 date/index.php
注意:未定义的属性:User::$ in /Applications/XAMPP/xamppfiles/htdocs/Side-Projects/Courses/PHP:SQL/Learn PHP 从零开始编程/04 - PHP 数据对象 (PDO)/51 - 用户 第 13 行的类 date/index.php
警告:为 foreach() 提供的参数无效 /Applications/XAMPP/xamppfiles/htdocs/Side-Projects/Courses/PHP:SQL/Learn PHP 从零开始编程/04 - PHP 数据对象 (PDO)/51 - 用户 第 13 行的类 date/index.php
有人可以帮助我了解如何解决此问题吗?提前谢谢你:)
【问题讨论】:
-
created 后面有一个不应该出现的逗号?
created', -
@KIKOSoftware - 应该不是问题,PHP 允许这样做
-
@Mark - 它不会在数组中创建另一个条目吗?在这种情况下是空的还是 NULL?
-
@KIKOSoftware - 不,很多开发人员确实将逗号放在“只是因为”......demo
-
@Mark - 好吧,我错了。我得测试一下。