博客列表 >实例演示子类调用父类方法,一个类实现多接口,采用trait,非自动加载与自动加载,数据库连接及数据的添加

实例演示子类调用父类方法,一个类实现多接口,采用trait,非自动加载与自动加载,数据库连接及数据的添加

P粉479712293
P粉479712293原创
2022年11月20日 01:13:56690浏览

题目1:子类调用父类里边的方法

demo1.php文件:

  1. <?php
  2. namespace _221116a;
  3. // *子类调用父类里边的方法
  4. class SanGuo{
  5. public static function welcome(){
  6. // return '欢迎,三国演义';
  7. return __METHOD__;
  8. }
  9. }
  10. class SuGuo extends SanGuo{
  11. }
  12. echo SuGuo::welcome().'<br>';
  13. echo SuGuo::class.'<br>';
  14. echo call_user_func([SuGuo::class,'welcome']);

浏览器运行结果:

题目2:一个类实现多个接口

demo2.php文件:

  1. <?php
  2. namespace _221116b;
  3. // *一个类实现多个接口
  4. interface iWei{
  5. public static function CaoCao();
  6. }
  7. interface iSu{
  8. public static function LiuBei();
  9. }
  10. interface iWu{
  11. public static function SunQuan();
  12. }
  13. class Jin implements iWei,iSu,iWu{
  14. public static function CaoCao(){
  15. return __METHOD__;
  16. }
  17. public static function LiuBei(){
  18. return __METHOD__;
  19. }
  20. public static function SunQuan(){
  21. return __METHOD__;
  22. }
  23. }
  24. echo call_user_func([Jin::class,'CaoCao']).'<br>';
  25. echo call_user_func([Jin::class,'LiuBei']).'<br>';
  26. echo call_user_func([Jin::class,'SunQuan']).'<br>';

浏览器运行结果:

题目3:采用trait

demo3.php文件:

  1. <?php
  2. namespace _221116c;
  3. // *采用trait
  4. trait tSanGuo{
  5. public static function zgl(){
  6. return __METHOD__;
  7. }
  8. }
  9. trait tSuiHu{
  10. public static function sj(){
  11. return __METHOD__;
  12. }
  13. }
  14. class Student{
  15. use tSanGuo;
  16. use tSuiHu;
  17. }
  18. echo call_user_func([Student::class,'zgl']).'<br>';
  19. echo call_user_func([Student::class,'sj']).'<br>';

浏览器运行结果:

题目4:非自动加载与自动加载

Demo1.php文件:

  1. <?php
  2. // *实现自动所需的3个条件
  3. // *1.一个文件只有一个类
  4. // *2.这个类名和文件名称必须一致
  5. // *3.这个类的命名空间,必须映射到类文件所在的路径
  6. namespace admin\controller;
  7. class Demo1{
  8. public static function index(){
  9. return __METHOD__;
  10. }
  11. }

Demo2.php文件:

  1. <?php
  2. // *实现自动所需的3个条件
  3. // *1.一个文件只有一个类
  4. // *2.这个类名和文件名称必须一致
  5. // *3.这个类的命名空间,必须映射到类文件所在的路径
  6. namespace admin\controller;
  7. class Demo2{
  8. public static function index(){
  9. return __METHOD__;
  10. }
  11. }

Demo3.php文件:

  1. <?php
  2. // *实现自动所需的3个条件
  3. // *1.一个文件只有一个类
  4. // *2.这个类名和文件名称必须一致
  5. // *3.这个类的命名空间,必须映射到类文件所在的路径
  6. namespace admin\controller;
  7. class Demo3{
  8. public static function index(){
  9. return __METHOD__;
  10. }
  11. }

demo4.php文件:

  1. <?php
  2. namespace admin;
  3. // namespace admin\controller;
  4. // *非自动加载下的完全限定名称,限定名称,非限定名称这三种方法
  5. // *自动加载器下的完全限定名称,限定名称,非限定名称这三种方法
  6. // *自动加载器下判断类文件是否存在
  7. // *一行代码
  8. spl_autoload_register(function($class){
  9. // require __DIR__ . DIRECTORY_SEPARATOR. $class.'.php';
  10. $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
  11. // require $path.'.php';
  12. $file = $path.'.php';
  13. // *判断是否存在'\\'分隔的类文件,如果有则依赖该文件
  14. if (file_exists($file)) {
  15. require $file;
  16. }
  17. // require $class.'.php';
  18. });
  19. // echo __NAMESPACE__.'<br>';
  20. // // *可使用非自动加载
  21. // require __DIR__ . '/admin/controller/Demo1.php';
  22. // require __DIR__.'/admin/controller/Demo2.php';
  23. // require __DIR__.'/admin/controller/Demo3.php';
  24. // *访问3个控制器中的方法(完全限定名称)
  25. echo \admin\controller\Demo1::index().'<br>';
  26. echo \admin\controller\Demo2::index().'<br>';
  27. echo \admin\controller\Demo3::index().'<br>';
  28. // *访问3个控制器中的方法(限定名称(相对路径))
  29. echo controller\Demo1::index().'<br>';
  30. echo controller\Demo2::index().'<br>';
  31. echo controller\Demo3::index().'<br>';
  32. // *非限定名称: 相对路径
  33. use admin\controller\Demo1;
  34. use admin\controller\Demo2;
  35. use admin\controller\Demo3;
  36. echo Demo1::index(). '<br>';
  37. echo Demo2::index(). '<br>';
  38. echo Demo3::index(). '<br>';

浏览器运行结果:

题目5:利用autoload.php文件代替自动加载器

demo5.php文件:

  1. <?php
  2. // *利用autoload.php文件代替自动加载器
  3. namespace admin\controller;
  4. require 'autoload.php';
  5. echo Demo1::index(). '<br>';
  6. echo Demo2::index(). '<br>';
  7. echo Demo3::index(). '<br>';

autoload.php文件:

  1. <?php
  2. spl_autoload_register(function($class){
  3. // echo $class;
  4. //require __DIR__ . DIRECTORY_SEPARATOR. $class.'.php';
  5. $path = str_replace('\\', DIRECTORY_SEPARATOR, $class);
  6. // require $path.'.php';
  7. $file = $path.'.php';
  8. // *判断是否存在'\\'分隔的类文件,如果有则依赖该文件
  9. if (file_exists($file)) {
  10. require $file;
  11. }
  12. // require $class.'.php';
  13. });

浏览器运行结果:

题目6:数据库的连接及数据的添加

connect.php文件:

  1. <?php
  2. namespace db2;
  3. // *连接数据库
  4. // *1.连接数据库首先要加这句
  5. use PDO;
  6. // *2连接数据库
  7. // $dsn='mysql:host=localhost;dbname=phpedu1;port:3306;charset=utf8';
  8. // $username='root';
  9. // $password='root';
  10. // $db=new PDO($dsn,$username,$password);
  11. $dbConfig = require 'database.php';
  12. // print_r($dbConfig);
  13. extract($dbConfig);
  14. $dsn = $type. ':host='. $host.';dbname='.$dbname;
  15. $db =new PDO($dsn, $username, $password);
  16. // var_dump($db);

database.php文件:

  1. <?php
  2. namespace db3;
  3. // *数据库连接参数
  4. return [
  5. // *数据库类型
  6. 'type'=>'mysql',
  7. // *主机ip
  8. 'host' => 'localhost',
  9. // *默认数据库
  10. 'dbname' => 'phpedu1',
  11. // *默认端口
  12. 'port' => '3306',
  13. // *默认用户
  14. 'username' => 'root',
  15. // *默认用户的密码
  16. 'password' => 'root',
  17. //* 默认字符集编码
  18. 'charset' => 'utf8',
  19. ];

demo6.php文件:

  1. <?php
  2. namespace db1;
  3. // *连接数据库
  4. // *1.连接数据库首先要加这句
  5. use PDO;
  6. // *2连接数据库
  7. require __DIR__ .'/config/connect.php';
  8. // var_dump($db);

demo7.php文件:

  1. <?php
  2. namespace db4;
  3. use PDO;
  4. use PDOStatement;
  5. // *插入-1
  6. // * 1. 连接数据库
  7. require __DIR__ . '/config/connect.php';
  8. //* 2. CURD
  9. // *新增
  10. // *INSERT INTO 表名 (字段名1,字段名2,字段名3,...) VALUES (值1,值2,值3,...)
  11. //* INSERT 表名 (字段名1,字段名2,字段名3,...) VALUES (值1,值2,值3,...)
  12. //* 如是mysql,且单条,还可以简化
  13. // *INSERT 表名 SET 字段名1=值1,字段名2=,值2,字段名3=值3,...
  14. //* SELECT * FROM `staff` WHERE 1
  15. /**
  16. * *1. SQL关键字全部大写
  17. * *2. 表名,字段名必须要反引号,防止和关键字冲突
  18. */
  19. // $sql = "INSERT `staff` SET `name`='张三',`sex`=0,`email`='12345@php.cn'";
  20. $sql="INSERT INTO staff(`name`,`sex`,`eamil`)VALUES('李四',0,'1234567@php.cn')";
  21. //* 创建sql语句对象
  22. // *new PDOStatement
  23. $stmt =$db->prepare($sql);
  24. // var_dump($stmt);
  25. //* 执行sql
  26. if ($stmt->execute()) {
  27. echo '插入成功';
  28. }

浏览器运行结果:

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议