在PDO中将日期从字符串转换为对象

时间:2018-01-29 09:56:08

标签: php mysql date pdo

我在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>

当我加载页面时,我有三个错误:

  

注意:未定义的变量:日期   /应用/ XAMPP / xamppfiles / htdocs中/侧面项目/课程/ PHP:SQL /学习   PHP编程从零开始/ 04 - PHP数据对象(PDO)/ 51 - 用户   第13行的class date / index.php

     

注意:未定义的属性:User :: $ in   /应用/ XAMPP / xamppfiles / htdocs中/侧面项目/课程/ PHP:SQL /学习   PHP编程从零开始/ 04 - PHP数据对象(PDO)/ 51 - 用户   第13行的class date / index.php

     

警告:为foreach()提供的参数无效   /应用/ XAMPP / xamppfiles / htdocs中/侧面项目/课程/ PHP:SQL /学习   PHP编程从零开始/ 04 - PHP数据对象(PDO)/ 51 - 用户   第13行的class date / index.php

有人可以帮我理解我如何解决这个问题吗?提前谢谢你:)

2 个答案:

答案 0 :(得分:0)

foreach($this->$dates AS $date)

应该是

foreach($this->dates AS $date)

否则,您尝试将$dates用作变量

答案 1 :(得分:0)

你有两个问题

首先 $this->$dates应为$this->dates第二 AS应为小写as

更改此

foreach($this->$dates AS $date) {

到这个

foreach($this->dates as $date) {