13种魔术方法

1、构造方法 __construct():

       触发条件: 由类生成对象的时候触发

       作用:对象的初始化     

2、析构方法 __destruct():

   触发条件:当对象释放的时候触发

   作用:释放或关闭资源

   什么时候会销毁对象?

1、当php脚本执行结束(php文件加载完毕),会释放所有的资源

2、通过unset()手动释放对象

          unset() 不一定导致对象的释放,当所有引用对象的变量都被unset掉之后,对象才会被释放只要有一个没有被释放,则对象都不会释放

3、克隆方法 __clone();  

1、克隆可以产生新对象,不会触发构造方法

触发条件:当克隆对象的时候触发

对象克隆与对象赋值的区别?

克隆:产生新的对象,一个对象发生改变其他的不会改变。彼此之间相互独立

赋值:不会产生新的对象,只是增加对对象的引用,一个发生变化其他的都会随之改变

4、访问方法 __get($name);

  触发条件:

 当访问类中不可见的成员属性的时候触发

参数:

必须有一个参数,用来接收不可见成员属性的名称

5、设置方法 __set($name,$value);

触发条件:当设置一个类中不可见的成员属性触发该魔术方法

参数:

$name:接收不可见的成员属性名

                $value:要设置的值

6、判断方法 __isset($name);

触发条件:使用empty或isset判断一个不可见的成员属性是否为空或是否存在的时候触发

参数: $name:接收要检测的不可见的成员属性名

 

7、释放方法 __unset($name);

触发场景:当释放一个不可见的成员属性的时候触发该魔术方法

参数: $name:获取你要释放不可见的成员属性名

8、数组访问 __call($name,$args);

触发场景:当你访问不可见的成员方法时触发该魔术方法

参数:

$name:接收访问不可见的成员方法名

$args:接收调用方法时传入的参数,数据类型是数组

9、数组静态访问 __callStatic($name,$args);

触发场景:当你访问不可见的静态成员方法时触发该魔术方法

参数:

$name:接收访问不可见的成员方法名

$args:接收调用方法时传入的参数,数据类型是数组

 

注意:

1、该魔术方法需为静态方法

2、静态成员方法中只能含有静态成员属性,不可以含有   非静态成员属性

3、类常量是否可以存在于静态方法中?可以

10、字符串访问 __toString();

触发条件:当你echo一个对象的时候会触发该魔术方法

返回值:返回值必须是一个字符串,用于代替对象输出展示

11、序列化 __sleep();

触发条件:当序列化一个对象的时候触发

 

返回值:类型为一个数组,里面包含要序列化的成员属性名

12、反序列化 __wakeup();

触发条件:当反序列化生成一个对象的时候触发;

返回值:类型为一个对象

13、自动加载类 __autoload($className);

触发条件 : 在使用不存在的类的时候会自动触发该函数

作用 : 实现类的自动加载

参数 : $className 接收类名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django1.8中间件是一个非常有用的功能,它允许你在Django请求和响应的处理过程中,插入自己的代码逻辑。下面是Django1.8中间件的几魔术方法: 1. `__init__(self, get_response=None)`:这个方法在中间件实例化时被调用,它接收一个可选的get_response参数,用于保存Django的请求处理链的下一个中间件的引用。 2. `process_request(self, request)`:这个方法在Django处理请求之前被调用,它接收一个request参数,代表当前的请求对象。如果这个方法返回一个HttpResponse对象,Django将不会执行后续的请求处理过程,而是直接将这个HttpResponse对象返回给客户端。 3. `process_view(self, request, view_func, view_args, view_kwargs)`:这个方法在Django执行视图函数之前被调用,它接收4个参数,分别是当前的请求对象request、即将执行的视图函数view_func、视图函数的位置参数view_args和关键字参数view_kwargs。如果这个方法返回一个HttpResponse对象,Django将不会执行后续的请求处理过程,而是直接将这个HttpResponse对象返回给客户端。 4. `process_template_response(self, request, response)`:这个方法在Django执行视图函数并且视图函数返回一个TemplateResponse对象后被调用,它接收两个参数,分别是当前的请求对象request和视图函数返回的TemplateResponse对象response。如果这个方法返回一个HttpResponse对象,Django将不会执行后续的请求处理过程,而是直接将这个HttpResponse对象返回给客户端。 5. `process_response(self, request, response)`:这个方法在Django执行视图函数并且处理完所有的中间件后被调用,它接收两个参数,分别是当前的请求对象request和视图函数返回的HttpResponse对象response。如果这个方法返回一个HttpResponse对象,Django将不会执行后续的请求处理过程,而是直接将这个HttpResponse对象返回给客户端。 6. `process_exception(self, request, exception)`:这个方法在Django执行视图函数时抛出异常后被调用,它接收两个参数,分别是当前的请求对象request和抛出的异常对象exception。如果这个方法返回一个HttpResponse对象,Django将不会执行后续的请求处理过程,而是直接将这个HttpResponse对象返回给客户端。 以上是Django1.8中间件的几魔术方法,你可以根据自己的需求选择实现其中的一些或全部方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值