2019-07-23 php魔术方法
本文对一些php中的魔术方法进行总结,魔术方法顾名思义就是具备神奇功能的方法(function)。魔术方法通常在某些特定情况下自动触发,不能用实例化变量名->方法名()来主动触发。不同的魔术方法有不同的触发情况,魔术方法都以”__”两个下划线开头,一定要注意是“两个下划线”,如果写成一个下划线,不报错,但也不会被触发。
1.构造方法 __construct(参数){ }
该魔术方法,在实例化类时自动触发,不能主动触发。一般用于执行某些初始化任务,在一个类中,只能声明一个构造方法,下面我们用构造方法赋初始值。
class Person{
var $name;
var $age;
var $sex;
//构造方法
function __construct($name,$age,$sex)
{
//赋值
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
function say()
{
echo "My name is ".$this->name.". I am ".$this->age." years old.".$this->sex." in sex.";
}
}
//在实例化时传入参数 执行构造方法
$obj = new Person("ZhangSan","20","male");
//再调用say()方法
$obj->say();
最后的输出结果是:My name is ZhangSan. I am 20 years old.male in sex.
从上面的例子可以看出,构造方法在类被实例化时主动触发,并可以传入参数。
以下几种情况适合放在构造方法内:
①数据库类
使用数据库之前,必须先连接数据库。我们可以将连接数据库的代码放在构造方法里。
②分页类
每次计算分页之前,必须获取当前页数、计算总页数,就可以放在构造方法里。
③上传类
必须先获取上传的文件 $file = $_FILES['form_name'],它就可以放在构造方法里。
④绘图类
必须先创造一个画板,这个过程也可以放在构造方法。
2.析构方法 __destruct( ){ }
析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件, 释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显示销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似, 一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。
下面我们来看一下析构函数的具体应用:
class Student{
function say()
{
echo "I am a student. ";
}
//析构方法
function __destruct()
{
echo "I am so happy.";
}
}
//实例化类
$obj_s = new Student();
//调用say()方法
$obj_s->say();
最后的输出结果是:I am a student. I am so happy.
可以看到,我们并没有主动去调用析构方法,但却输出了析构方法的结果。是因为在调用类方法结束后会自动释放内存。在释放内存前,主动触发了析构函数。
2019-07-23 php魔术方法的更多相关文章
- PHP 中的 9 个魔术方法
这个标题有点牵强因为php有不只9种魔术方法, 但是这些将会引导你使用php魔术方法一个好的开始.它可能魔幻,但是并不需要魔杖. 这些'魔术'方法拥有者特殊的名字,以两个下划线开始,表示这些方法在ph ...
- [Python3 填坑] 014 类的常用魔术方法举例
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 __init__() 2.2 __new__() 2.3 __call__() 2.4 __str__() 2.5 __repr__() ...
- PHP面向对象常见的关键字和魔术方法
在PHP5的面向对象程序设计中提供了一些常见的关键字,用来修饰类.成员属性或成员方法,使他们具有特定的功能,例如final.static.const等关键字.还有一些比较实用的魔术方法,用来提高类或对 ...
- PHP中的常用魔术方法
魔术方法: 是指某些情况下,会自动调用的方法,称为魔术方法 php面向对象中,提供了这几个魔术方法,他们的特点都是 以双下划线__开头的 __construct() 构造方法 __destruct( ...
- php预定义变量,超全局变量,魔术方法,特殊函数变量使用
<?php /* * 本代码全部为测试函数代码,部分注释和写实例 * * 修改php.ini variables_order=”EGPCS” * 请注意$_REQUEST在优先级传参的时候会造成 ...
- PHP 魔术方法之__set__get__unset,__isset,__call
<?php /*** 魔术方法: 是指某些情况下,会自动调用的方法,称为魔术方法 PHP面向对象中,提供了这几个魔术方法, 他们的特点 都是以双下划线__开头的 __construct(), _ ...
- python类:magic魔术方法
http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法&q ...
- php魔术方法__get(),__set(),__isset()的使用
1.魔术方法__get(),__set(),__isset()类: <?php /** * @purpose: 魔术方法 __get() , __set(), __isset() 的使用 * U ...
- (转)python类:magic魔术方法
原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisor ...
- PHP的魔术方法
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods) 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对 ...
随机推荐
- Net core学习系列(七)——Net Core中间件
一.什么是中间件(Middleware)? 中间件是组装到应用程序管道中以处理请求和响应的软件. 每个组件: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下一个组件之前和之后执行工作. ...
- 这可能是目前最透彻的Netty原理架构解析
https://juejin.im/post/5be00763e51d453d4a5cf289 本文基于 Netty 4.1 展开介绍相关理论模型,使用场景,基本组件.整体架构,知其然且知其所以然,希 ...
- CSRF的防御
声明 本文转自:跨站请求伪造漏洞
- vue动态绑定class的几种方式
对象方法 -最简单的绑定(这里的active加不加单引号都可以,以下也一样都能渲染) :class="{ 'active': isActive }" 判断是否绑定一个active ...
- 前端知识点回顾之重点篇——CSS中flex布局
flex布局 来源: http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 采用 Flex 布局的元素 ...
- Eclipse中SpringBoot项目POM文件报UnKnown的解决方案
在项目中使用spring-boot-starter-parent的2.1.5.RELEASE版本时发现会出现POM错误(Unknown),其实这错误可以无视,但如果你实在看不下去可以在POM中添加如下 ...
- 什么时候会进行 SpringMVC重定向保存参数(FlashMap)?
SpringMVC重定向保存参数(FlashMap):两种情况会保存参数: 1. 当前视图为RedirectView,也即是说当前请求为重定向请求. org.springframe ...
- CentOS7下安装Mariadb 10.3.17
1. install lsb packagesudo yum install -y redhat-lsb 2.install net-tools packagesudo yum install -y ...
- pytorch 中conv1d操作
参考:https://blog.csdn.net/liujh845633242/article/details/102668515 这里我重点说一下1D卷积,2D卷积很好理解,但是1D卷积就不是那么好 ...
- k8s记录-k8s部署参考
一.环境准备 yum -y install epel-release yum -y install wget nmap lsof iotop lrzsz ntpdate tree rm -rf /et ...