博客列表 >后期静态绑定的使用场景与实例说明

后期静态绑定的使用场景与实例说明

过儿的博客
过儿的博客原创
2019年03月06日 16:12:39759浏览

static::  在静态集成的上下文环境中,动态的设置方法调用

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <?php
      class A{
          public static function who(){
              echo __CLASS__;
          }
          public static function test(){
              //self::who();
              static::who(); //静态方法中动态调用
          }
      }
      class B extends A{
        public static function who(){
            echo __CLASS__;
        }
      }
      //静态继承的上下文之间
      B::test();
      echo '<br>';
      
      
      //父类
      class Connection{
          public static function connect(){
              //return static :: config(); 子类继承后调用的会变成子类中的连接参数
              return self::config();  //子类继承后调用的仍然是父类中的连接参数
          }
          public static function config(){
            return new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
          }
      }
      //创建连接子类
      class Link extends Connection{
          public static function config(){
              //错误的连接密码
              return new PDO('mysql:host=127.0.0.1;dbname=php','root','');
          }
      }
      $pdo = Link::connect();

      $staffs = $pdo->query('select * from `staff` limit 5');
      foreach($staffs as $staff){
          print_r($staff);
          echo '<br>';
      }
    ?>
</body>
</html>

运行实例 »

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

1.png

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