请选择 进入手机版 | 继续访问电脑版
查看: 135|回复: 0

Discuz文件discuz_base.php代码功能注释

[复制链接]

648

主题

650

帖子

3342

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3342
发表于 2021-10-15 08:36:03 | 显示全部楼层 |阅读模式
Discuz文件discuz_base.php代码功能注释
本帖提供的是DiscuzX3.3版本文件discuz_base.php代码功能的注释。

  1. <?php

  2. if (!defined('IN_DISCUZ')) {
  3.   exit('Access Denied');
  4. }

  5. //PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。
  6. //任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

  7. abstract class discuz_base
  8. {
  9.   private $_e;
  10.   private $_m;

  11.   public function __construct() {}

  12.   //试图设置对象未定义的一个属性时调用
  13.   public function __set($name, $value) {
  14.     $setter='set'.$name;

  15.     //bool method_exists(mixed $object, string $method_name)
  16.     //检查类的方法是否存在于指定的object中
  17.     //object 对象示例或者类名
  18.     //method_name 方法名
  19.     //如果method_name所指的方法在object所指的对象类中已定义,则返回true,否则返回false。
  20.     if (method_exists($this,$setter)) {
  21.       return $this->$setter($value);

  22.     //string get_class([object $object=NULL])
  23.     //返回对象实例object所属类的名字
  24.     //object 要测试的对象。如果在类里,此参数可以省略。
  25.     //返回对象实例object所属类的名字。如果object不是一个对象则返回false。
  26.     //如果在一个类里,省略了参数object,则返回当前所在类的名称。
  27.     //如果object是命名空间中某个类的实例,则会返回带上命名空间的类名。
  28.     } elseif ($this->canGetProperty($name)) {
  29.       throw new Exception('The property "'.get_class($this).'->'.$name.'" is readonly');
  30.     } else {
  31.       throw new Exception('The property "'.get_class($this).'->'.$name.'" is not defined');
  32.     }
  33.   }

  34.   //试图获取对象未定义的一个属性时调用
  35.   public function __get($name) {
  36.     $getter='get'.$name;
  37.     if (method_exists($this,$getter)) {
  38.       return $this->$getter();
  39.     } else {
  40.       throw new Exception('The property "'.get_class($this).'->'.$name.'" is not defined');
  41.     }
  42.   }

  43.   //调用未定义方法时调用。它取两个参数:所用的方法名以及一个数组,其中包含传递给该方法的所有值。
  44.   public function __call($name,$parameters) {
  45.     throw new Exception('Class "'.get_class($this).'" does not have a method named "'.$name.'".');
  46.   }

  47.   public function canGetProperty($name) {
  48.     return method_exists($this,'get'.$name);
  49.   }

  50.   public function canSetProperty($name) {
  51.     return method_exists($this,'set'.$name);
  52.   }

  53.   //需要对象的字符串表示时会调用这个方法
  54.   public function __toString() {
  55.     return get_class($this);
  56.   }

  57.   public function __invoke() {
  58.     return get_class($this);
  59.   }
  60. }
  61. ?>
复制代码


回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|蓄财网 ( 豫ICP备2021002293号 )

GMT+8, 2021-11-29 22:21 , Processed in 0.097686 second(s), 32 queries .

蓄财网 ©版权所有

© 2021 蓄财网(www.aixc.cn)

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