前言

简单展示一下php面向对象,使用PDO连接mysql数据库,把数据库读取的数据映射到我们的对象

常识部分

和 JAVA 的感觉差不多,通过class+类名来定义一个类
然后在里面写变量,例如我们定义一个 Person(人) 类, 然后给他一个$realname(真实姓名)
用 public function 来定义方法,一个 get 一个 set , 具体看下面的示例文件吧,
用 Phpstorm 可以按住 alt+insert 来快速生成 get,set

示例文件 [Person.php]

<?php
class Person
{
public $realname;

    /**
     * @return mixed
     */
    public function getRealname()
    {
        return $this->realname;
    }

    /**
     * @param mixed $realname
     */
    public function setRealname($realname): void
    {
        $this->realname = $realname;
    }
}

类的基本构建

在 phpstorm 里可以alt+insert快速插入一个 constructor(构建器) 你也可以自己手动输入
public function __construct 然后后面是你的参数

例如:(是用的本文下面 User类的例子)

public function __construct($username, $birthday)
{
    $this->username = $username;
    $this->birthday = $birthday;
}

类的继承

使用 extends 可以进行类的继承,比如我们新建一个User(用户)类,然后继承Person类, 就是class User extends Person,
记得在开始require你的Person类,将类引入.

require和include区别?
incluce 在用到时加载
require 在一开始就加载
_once 后缀表示已加载的不加载

当想获取父类值时,我这里返回了父类的方法(刚开始学不知道对不对..)
如:return parent ::getRealname();

示例文件 [User.php]

<?php
require 'Person.php';

class User extends Person
{
public $username;
public $birthday;



    public function getRealname()
{
    return parent::getRealname(); // TODO: Change the autogenerated stub
}

    /**
     * @param mixed $realname
     */
    public function setRealname($realname): void
    {
        $this->realname = $realname;
    }

    /**
     * @param mixed $username
     */
    public function setUsername($username): void
    {
        $this->username = $username;
    }

    /**
     * @return mixed
     */
    public function getUsername()
    {
        return $this->username;
    }

}

PDO连接数据库映射对象

fetchALL中fetch class,后面参数跟上类名
在下面的示例中,我们使用了上面的Person和User类
将fetch到的结果(是个数组)给了$row这个变量;
然后循环输出所有的结果

参考文件 [index.php]

<?php

require 'User.php';

$link=new PDO('mysql:host=主机地址;dbname=数据库名','数据库用户名','数据库密码');

$row=$link->query('select * from users')->fetchAll(PDO::FETCH_CLASS,'User');

$i=0;
$row[0]->setRealname('张小明');
echo '<br>';
echo $row[0]->getRealname();

while ($i<count($row)){
    echo $row[$i]->username.'<br>';


    echo $row[$i]->birthday.'<br>';
    echo $row[$i]->gender.'<br>';
    $i++;
}


$just_test=new User();

$just_test->setRealname("你好");

echo $just_test->getRealname();
echo '<br>';
$just_test->setUsername("nihao");
echo $just_test->getUsername();

参考

PDO和MySQLi区别与选择?
类的自动加载
构造函数和析构函数

标签: php, 面向对象, PDO, 映射对象, 数据库

添加新评论