博主信息
博文 37
粉丝 0
评论 1
访问量 37225
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
命名空间和trait类使用-2019-10-11
H先生
原创
972人浏览过


    1. 写一个分级的命名空间, 并实现类的自动加载


0.png






实例

<?php


namespace _1010;

use PDO as p;

interface iDbParams
{
    const DSN = 'mysql:dbname=php';
    const USER = 'root';
    const PASS = 'root';

}

$pdo = new P(iDbParams::DSN, iDbParams::USER, iDbParams::PASS);
var_dump($pdo);

$sql = 'SELECT `staff_id`,`name`,`position`  FROM `staff` LIMIT :num OFFSET :offset';
$stmt = $pdo->prepare($sql);
$stmt->bindValue('num',5,\PDO::PARAM_INT);
$stmt->bindValue('offset',0,\PDO::PARAM_INT);
$stmt->execute();

foreach ($stmt->fetchAll() as $staff){
    echo "<p>{$staff['staff_id']} -- {$staff['name']} -- {$staff['position']}</p>";
}

exit;

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例





    2. 写一个trait类, 理解它的功能与使用场景

  




0.png








实例

<?php


namespace _1010;

use PDO;

// trait

trait Db
{
    // 连接数据库
    public function connect($dsn, $username, $password)
    {
        return new PDO($dsn, $username, $password);
    }
}

trait Query
{
    public function get(PDO $pdo, $where = '')
    {
        $where = empty($where) ? '' : ' WHERE ' .$where;
        $stmt = $pdo->prepare('SELECT * FROM `staff` '. $where . ' LIMIT 1');
        $stmt->execute();
        return $stmt->fetch(PDO::FETCH_ASSOC);
    }

}

// 客户端调用:工作类

class Client
{
    // 在宿主类Client中引入上面生命的二个Trait类/方法库
    use Db;
    use Query;

    public $pdo = null;

    public function __construct($dsn, $username, $password)
    {
        // 调用的是Trait Db中的方法connect()
        $this->pdo = $this->connect($dsn, $username, $password);
    }

    // 调用的是Trait: Query中的方法:get()
    public function find($where)
    {
        return $this->get($this->pdo,$where);
    }
}

$dsn = 'mysql:dbname=php';
$username = 'root';
$password = 'root';

$client = new Client($dsn, $username, $password);

echo '<pre>' . print_r($client->find('age > 30'),true);

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

























































批改状态:合格

老师批语:你也可以举一下其它形式的trait 类应用, 例如 模板加载
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学