企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
类中成员分为3大类:属性:方法:常量: 详细一点,就又分为: 属性: 普通属性;//一般属性,实例属性 静态属性; 方法: 普通方法;//一般方法,实例方法 静态方法; 构造方法; 析构方法; 常量: 类常量,在类中定义一个常量就称为类常量,本质还是常量 定义形式:class 类名{ const 常量名=常量值; //不可以使用define()来定义!} 使用形式: 常量的使用,是通过类名,并使用范围解析符(::)来取用的; 类名::常量名; 普通属性(实例属性) 实例也叫对象,使用形式$对象->属性名; 静态属性 一个类中的一个静态属性,就只有“一份数据”;但:一个类中的一个实例属性,就可以有“多份数据”——每创建一个对象出来,就会有一份数据; 使用: 使用类名和范围解析符(::)来对静态属性进行操作: 类名::$静态属性名;//注意:属性名带$符号 对比1:常量的使用:类名::常量名; 对比2:实例属性的使用:对象名->实例属性名; //注意:属性名不带$符号 实例属性,是每个对象都可以不一样的数据,也是每个对象都“独自拥有”的数据; 静态属性,他不属于任何一个对象,而只属于该类本身,也可以理解为为所有对象所共有的数据 普通方法(实例方法) 调用形式:$对象名->方法名(实参1,实参2,....); 静态方法 调用形式: 类名::方法名(实参1,实参2,....); 类常量 定义类常量的时候,前面不能有任何的访问控制修饰符,也不受访问控制的限制!只要能找到类,就能访问该类常量!![Image](https://box.kancloud.cn/cbf723abf44caab80c29baf8c901038c_269x50.png) 析构方法 \_\_destruct();对象被“销毁”的时候会自动被调用的方法——我们无法调用它.不能带参数(形参),但方法中也可以使用$this这个词,代表”当前对象”; 对象在哪些情况不会被销毁 1,如果程序结束,所有变量都会被销毁,自然,变量所代表的对象也会被销毁; 对象销毁的顺序,默认情况下,跟其创建的顺序相反; $o1=new c(‘a’); $o2=new c(‘b’); $o3new c(‘c’); var\_dump($o1,o2,o3); //c被销毁 b被销毁 a被销毁 2,当一个对象没有任何变量“指向”它的时候,即使程序还没有结束,也会被销毁 $o1=new c(‘a’); $o1=$o2; unset($o1); //$o2没有被销毁,如下图 ![Image](https://box.kancloud.cn/b6023f2f39a2114aa0aca8cca92abead_699x194.png) 如果$o1=new c(‘a’); $o1=&$o2; unset($o1); //$o2没有被销毁,如下图 ![Image](https://box.kancloud.cn/3fd5a5c80d675339e0101a95b0d39c99_763x151.png) 最后一个情况:$o4=new c1(‘d’); $o41=&$o4; $o4=44 unset($o4); //这2个对象被销毁吗?见下图:会都被销毁 开始,其原理为: ![Image](https://box.kancloud.cn/3a229cf9bc8b24d75cc224445b6b3d44_759x149.png) 赋值之后($o4 = 44),其结果及原理为: ![Image](https://box.kancloud.cn/6557d174c1143d439b791141ca66725c_712x138.png) parent关键字 代表父类, 本质上就是代表父类这个“类”,而不是父类的“对象”; 使用: parent::属性或方法;//通常是静态属性或静态方法,但有时候可能是实例属性或实例方法;![Image](https://box.kancloud.cn/5bd156e1b184bdac924bfb9c5f57487d_502x233.png) 对比相关的词: 关键字 含义 使用位置: 使用示例 parent: 代表父类(这个类) 肯定在一个方法中 parent::属性或方法; self: 代表当前其所在的类 肯定在一个方法中 self::静态属性或方法; $this: 代表调用当前方法的对象 肯定在一个方法中 $this->实例属性或方法;