PHP高级OOP面向对象基础-关键字final 用于修饰方法和类,不能修饰属性 特点: 1. final修饰的类不能被继承 2. 用final 修饰的方法不能被覆盖重写== 应用: 登录时,账号密码的验证 static 静态 定义:用于修饰属性和方法, 不能修饰类 修饰的属性:静态属性 只能使用静态方式去访问, 在类的外面调用 类名::$属性名 内部 self::$属性名 修饰的方法:静态方法作者王明昌发布时间2018-01-02文章目录finalstatic 静态单例设计模式constinstanceof 关键字clone 克隆对象__clone魔术方法final 用于修饰方法和类,不能修饰属性 特点: 1. final修饰的类不能被继承 2. 用final 修饰的方法不能被覆盖重写== 应用: 登录时,账号密码的验证 static 静态 定义:用于修饰属性和方法, 不能修饰类 修饰的属性:静态属性 只能使用静态方式去访问, 在类的外面调用 类名::$属性名 内部 self::$属性名 修饰的方法:静态方法 只能使用静态方式去访问, 在类的外面调用 类名::$方法名 内部 self::$方法名 静态方法里面不能出现 $this ,静态的属性值不能修改 类中的一些方法没什么联系可以把他们设置为静态方法 实现设计模式 复制class Person { public static $name = '小小'; private static $age = '18'; public function show(){ echo self::$age; // echo $this->name; 方法使用static后,不能使用$this } public function show2(){ echo self::show().",hahaha"; } public static function show3(){ echo self::$name; } } $a = new Person(); //$a ->show(); $a ->show2(); //外部调用 Person::$name; Person::show3(); 单例设计模式 http://www.cnblogs.com/siqi/archive/2012/09/09/2667562.html 分析: 一个类只允许一个对象使用 先禁止生成对象设置为静态方法静态方法里实例化对象判断是否存在复制例子 class Demo { private static $obj = null; //禁止生成对象 private function __construct() { } public static function getObj(){ if(self::$obj == null){ return self::$obj = new Demo(); }else{ return self::$obj; } } } $a = Demo::getObj(); $b = Demo::getObj(); $c = Demo::getObj(); var_dump($a); var_dump($b); var_dump($c); //输出结果: // object(Demo)#1 (0) { } object(Demo)#1 (0) { } object(Demo)#1 (0) { } YES //两个等号,判断是否是同类,三个等号,值等方面是否相同 if($a === $b){ echo "YES"; }else{ echo "NO"; } const const 常量名 = 常量值; 不能进行运算,if/循环 里面不能使用const定义常量 可以在类里面定义 ,在类的内部使用 self::常量名 可以在类里面定义 ,在类的外部使用 类名::常量名 define:不能定义再类里面定义 复制class Person { const A = 'aaaa'; public static function show(){ echo self::A;//可以在类里面定义 ,在类的内部使用 self::常量名 } } //Person::show();//aaaa echo Person::A;//aaaa 可以在类里面定义 ,在类的外部使用 类名::常量名 instanceof 关键字 判断一个对象是否属于某个类 或该类的子类的实例 $c instanceof A (实例化的对象 instanceof 类名) 复制class A{} class B{} class C extends A{} $a = new A(); $b = new B(); $c = new C(); if($c instanceof A){ echo "YES"; }else{ echo "NO"; } clone 克隆对象 对象的引用赋值, 克隆语法 $a = clone $b; 复制class A { public $name = 'zz'; } $a = new A; //var_dump($a);//object(A)#1 (1) { ["name"]=> string(2) "zz" } //$a->name = 'xx'; //$b = $a; //var_dump($b);//object(A)#1 (1) { ["name"]=> string(2) "xx" } //var_dump($a);//object(A)#1 (1) { ["name"]=> string(2) "xx" } var_dump($a); $c = clone $a; var_dump($c); //object(A)#1 (1) { ["name"]=> string(2) "zz" } object(A)#2 (1) { ["name"]=> string(2) "zz" } __clone魔术方法 在该对象被克隆时,自动调用 作用 : 1. 如果封装该方法,那么会使对象不能被克隆 2. 将属性里对象值,在被克隆时,也进行克隆 3. 在被克隆时候,可以重置或更改相关属性 复制//克隆 对象中有对象,克隆时,都增加 //object(B)#3 (1) { ["obj"]=> object(A)#4 (1) { ["name"]=> string(3) "aaa" } } class A { public $name = "aaa"; } class B { public $obj = null; public function __construct($obj) { //实例化的时候传入一个对象 $this->obj = $obj; } public function __clone() { $this->obj = clone $this->obj; } } $m = new B(new A); var_dump($m); $n = clone $m;
2018-08-22支付宝支付接口错误说明错误查询 https://docs.open.alipay.com/58/103599/ 今天我遇到的一个错误,经过询问小二,网关错误,错误如下 ILLEGAL_ACCESS_SWITCH_SYSTE
2019-12-10阿里巴巴开源镜像提供的 packagist 镜像服务全局配置(推荐) 所有项目都会使用该镜像地址: composer config -g repo.packagist composer https://mirrors.aliyun.com/compos
2018-08-26实例 | 支付宝支付(使用md5加密)参数的获取 pid|key获取: 商户中心---账户管理---查看pid|key https://openhome.alipay.com/platform/keyManage.htm?keyType=
2018-10-31实例 | tp5使用七牛云上传图片和文件/删除文件thinkphp5中使用七牛云 下载 https://github.com/qiniu/php-sdk vendor文件下 新建文件 application/extra/qiniu.php retur
2018-05-28ajax-post传值的写法var data = {type:type,is_ok:is_ok,id:id}; $("#train").on("click",function(){ var id = $("#id_res").v
2018-05-27Ajax异步搜索内容,并显示使用ajax异步搜索内容,如果符合内容,则一行行的显示,每次查询时清空上次的记录 $("#search").on("click",function(){ var key = $("#keywords"