Correction status:qualified
Teacher's comments:如果要在页面中回显新增的记录, 可以按以下思路:
1. 获取到新增记录的主键id
2. 根据id进行查询
3. 将查询结果显示在信息列表中, 再刷新它就可以了
一、写一个分级的命名空间, 并实现类的自动加载,
分级命名空间,创建如下代码类:
<?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();
点击 "运行实例" 按钮查看在线实例
二、写一个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);
点击 "运行实例" 按钮查看在线实例
未执行的时候,数据库
执行后的数据库,请老师帮忙检察指导一下,谢谢
总结:朱老师,我这个trait类的方法是新增数据库数据,
但是没有优化好。测试了中是可以新加数据的。
但是没有做出能在页面中显示出来添加成功的数据。希望老师帮忙指导优化一下!谢谢
trait类,用在的场景就是复制一个类中的方法,需要用子类继承使用的时候不用真的改变其他正常父类的方法。从而方便自己团队使用!另外可以当成一个类方法的库。一个子类可以继承多个trait类的方法!
PS:今日11月5日,最近学习到larveal 框架了,都是用命名空间自动加载类的方法。目前在往这方面的视频加强学习!