找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1156|回复: 0

访问控制

[复制链接]

304

主题

42

回帖

1346

积分

管理员

积分
1346
发表于 2021-4-22 12:23:26 | 显示全部楼层 |阅读模式
访问控制
  1. <?php
  2. /*
  3.         继承
  4.                 直观目标:
  5.                         解决代码的重用

  6.                 实现步骤:
  7.                         1. 提取重复的代码
  8.                         2. 建立联系, extends

  9.                 结论:
  10.                         使用了继承,父类拥有的所有属性和方法,子类都有。

  11.         public          公有属性

  12.         protected         受保护属性

  13.         private         私有属性


  14.                         public        protected         private
  15.         外部      Y         N          N

  16. */

  17. class Animal
  18. {
  19.         public $a = 100;
  20.         private $b = 200;
  21.         protected $c = 300;
  22. }

  23. $ani = new Animal();
  24. // 类外部访问公有属性
  25. var_dump($ani->a);
  26. // 类外部访问私有属性
  27. // var_dump($ani->b);
  28. // 类外部访问受保护属性
  29. var_dump($ani->c);
复制代码
mysqli
  1. <?php
  2. define('DB_HOST', 'localhost');
  3. define('DB_USER', 'root');
  4. define('DB_PASSWD', 'jiege');
  5. define('DB_NAME', 'test');
  6. define('DB_PORT', '3306');

  7. class Model
  8. {
  9.         // mysqli 实例
  10.         protected $mysql = null;
  11.         // 结果集 实例
  12.         protected $result = null;

  13.         public function __construct()
  14.         {
  15.                 // mysql 的连接
  16.                 $this->mysql = new MySQLi(DB_HOST, DB_USER, DB_PASSWD, DB_NAME, DB_PORT);
  17.         }

  18.         public function find(int $id)
  19.         {
  20.                 // 组装SQL
  21.                 $sql = "select * from `{$this->table}` where `id` = {$id} limit 1";

  22.                 echo $sql . '<br>';

  23.                 $this->query($sql);

  24.                 return $this->fetch();
  25.         }

  26.         public function query($sql)
  27.         {
  28.                 // 发送执行
  29.                 $this->result = $this->mysql->query($sql);
  30.         }

  31.         protected function fetch() : array
  32.         {
  33.                 // 检索结果
  34.                 $rows = $this->result->fetch_all(MYSQLI_ASSOC);

  35.                 return $rows;
  36.         }
  37. }


  38. class User extends Model
  39. {
  40.         protected $table = 'user';

  41.         public function getTable()
  42.         {
  43.                 return $this->table;
  44.         }
  45. }

  46. $user = new User();

  47. $list = $user->find(1);

  48. echo '<pre>';
  49.         print_r($list);
  50. echo '</pre>';

  51. echo $user->getTable();
复制代码
demo
  1. <?php
  2. /*
  3.         继承
  4.                 直观目标:
  5.                         解决代码的重用

  6.                 实现步骤:
  7.                         1. 提取重复的代码
  8.                         2. 建立联系, extends

  9.                 结论:
  10.                         使用了继承,父类拥有的所有属性和方法,子类都有。

  11.         public          公有属性

  12.         protected         受保护属性

  13.         private         私有属性

  14.                         public        protected         private
  15.     自己      Y         Y          Y
  16.         家族      Y         Y          N
  17.         外部      Y         N          N
  18. */

  19. class Animal
  20. {
  21.         public $a = 100;
  22.         private $b = 200;
  23.         protected $c = 300;
  24. }

  25. class Dog extends Animal
  26. {
  27.         public function test()
  28.         {
  29.                 var_dump($this->a);
  30.                 var_dump($this->b);
  31.                 var_dump($this->c);
  32.         }
  33. }

  34. $dog = new Dog();
  35. $dog->test();
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|外汇论坛 ( 粤ICP备16021788号 )

GMT+8, 2024-11-25 07:03 , Processed in 0.057407 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表