Blogger Information
Blog 49
fans 0
comment 3
visits 23006
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
实例演示子类调用父类方法,一个类实现多接口,采用trait,非自动加载与自动加载,数据库连接及数据的添加
P粉479712293
Original
681 people have browsed it

题目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. }

浏览器运行结果:

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
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