Blogger Information
Blog 26
fans 1
comment 2
visits 21664
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
10月10日作业,写一个分级的命名空间, 并实现类的自动加载。写一个trait类,数据库一条数据!
星空的博客
Original
514 people have browsed it

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

分级命名空间,创建如下代码类:

实例

<?php
namespace _1010\one\two\three;

class Test1
{
    public static function demo1()
    {
        return '原理是这样';
    }
}

class Test2
{
    public static function demo2()
    {
        return '请问你在干什么';
    }
}

class Test3
{
    public static function demo3()
    {
        return '你好啊';
    }
}

运行实例 »

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

在另一个脚本中引入,这个脚本,再用use 创建

实例

<?php
//命名空间的别名引用
namespace _1010;

include __DIR__.'/test.php';

//use 如果省略as,那么当前类的别名就是当前类去掉空间名称的类名
//use 默认从全局开始,可以省略掉:\,as 给当前的空间名称起一个别名;

use _1010\one\two\three\Test1;
echo Test1::demo1();
echo '<hr>';

use _1010\one\two\three\Test2;
echo Test2::demo2();

echo '<hr>';
use _1010\one\two\three\Test3;
echo Test3::demo3();

运行实例 »

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

image.png

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


实例

<?php
namespace _1010;

use PDO;

//trait是个方法集,可以当父类来使用
trait Db
{
    //连接数据库
    public function connect($dsn, $username, $password)
    {
        return new PDO($dsn, $username, $password);
    }
}

    trait Create //创建一个添加数据的方法trait类库
{
        public function get($data)
        {
            $table='student';
            //字段列表
            $fields=' ( name, course, grade) ';
            //值列表
            $values=' (:name, :course, :grade) ';
            $sql=' INSERT INTO '.$table.$fields. 'VALUES' .$values;
            $stmt = $this->pdo->prepare($sql);
            $stmt->execute($data);
        }
}

//客户端调用:工作类

class Client
{
    //在宿主类中引用上面声明的二个Trait类/方法库
    use Db;
    use Create;

    public  $pdo=null;

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


}
$dsn='mysql:dbname=myblog';
$username='root';
$password='root';

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

$data = [
    'name' => '周星驰',
    'course' => 'js',
    'grade' => 80,
];
$res = $db->xin($data);

运行实例 »

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

未执行的时候,数据库

image.png

执行后的数据库,请老师帮忙检察指导一下,谢谢

image.png


总结:朱老师,我这个trait类的方法是新增数据库数据,

但是没有优化好。测试了中是可以新加数据的。

但是没有做出能在页面中显示出来添加成功的数据。希望老师帮忙指导优化一下!谢谢

trait类,用在的场景就是复制一个类中的方法,需要用子类继承使用的时候不用真的改变其他正常父类的方法。从而方便自己团队使用!另外可以当成一个类方法的库。一个子类可以继承多个trait类的方法!


PS:今日11月5日,最近学习到larveal 框架了,都是用命名空间自动加载类的方法。目前在往这方面的视频加强学习!



Correction status:qualified

Teacher's comments:如果要在页面中回显新增的记录, 可以按以下思路: 1. 获取到新增记录的主键id 2. 根据id进行查询 3. 将查询结果显示在信息列表中, 再刷新它就可以了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post