php中构造函数与析构函数详解
析构函数
php析构函数的作用刚好和构造函数相反,构造函数是在对象实例化时自动执行,而析构函数在对象被销毁时自动执行。
默认情况下,php仅释放对象属性所占用的内存,并不销毁对象相关的资源,而利用析构函数在使用一个对象之后执行代码来清除内存,并将对象从内存中销毁。析构函数__destruct()结构形式如下:
代码如下 | 复制代码 |
function __destruct(){ /* class initialization code */ } |
析构函数是由系统自动调用,不能带参数。
实例:
代码如下 | 复制代码 |
<?php |
析构函数的调用
php如何调用析构函数?当php脚本不再与对象相关时将调用析构函数。如果要明确地销毁一个对象调用析构函数,可以给指向对象的变量不分配任何值,通常将变量赋值为NULL或者用unset()函数。
实例:
代码如下 | 复制代码 |
<?php |
构造函数
我们在使用类的过程中,有时需要立即为实例化对象的多个字段父子,如果通过手工,会带来很多不可预测的问题,而如果在对象创建过程中自动执行,则会带来很多方便。
php构造函数作用就是当类被实例化时,会自动执行的函数,又称为构造函数。
构造函数的声明和其它函数一样,知识构造函数的名称是“__construct”固定的名称,其结构形式如下:
代码如下 | 复制代码 |
function __construct([argument1,argument2,argument3]){ |
实例:
代码如下 | 复制代码 |
<?php |
调用父类构造函数
构造函数可以被子类调用,php调用父类构造函数时必须使用parent关键字,否则不会自动调用。
实例:
代码如下 | 复制代码 |
<?php |
const属性
用const属性定义的字段是一个常量,类中的常量和静态变量类似,不同之处就是常量的值一旦赋值不能被改变。
const定义常量不需要加$符号,其结构形式如下:
const 常量名称 //常量名称不能用$符号
实例:
代码如下 | 复制代码 |
<?php |
提示:使用const定义的常量名称一般都大写,这是一个约定,我们要养成一个良好的命名方式习惯。如果定义的常量由多个单词组成,则使用下划线_链接,这也是一个约定。例如:FILE_SIZE。
protected属性
protected限定的字段作用域在public和private之间,若该成员被声明称protected(保护),则代表只能在该类和该类的子类中使用该字段。
实例:
代码如下 | 复制代码 |
<?php |
final关键字
php final关键字用来在一个函数或者类名称前面,表明该函数不能被重写或者该类不能被继承。
1、final方法不能被重写。
如果不希望类中某个方法被子类重写,只需要在这个方法前加上关键字final,即设置final方法。
实例:
代码如下 | 复制代码 |
<?php |
加了final关键字的方法不能被重写,运行出错。
2、final类不能被继承。
被声明了final的类不能被继承,否则出错。
实例:
代码如下 | 复制代码 |
<?php |
static关键字
php static关键字不仅可以用来声明一个静态变量,在类中同样可以声明静态的属性或者方法,成为“类属性”或“类方法”。
1、声明了静态的属性和方法后,在类中不能用$this关键字来引用,可以使用下面两种方法引用:
在类中:self::静态成员名称
在类外:类名称::静态成员名称
2、访问该类时,可不必实例化,直接使用类名称::静态成员名称的格式。
静态属性实例:
代码如下 | 复制代码 |
<? |
静态方法实例:
代码如下 | 复制代码 |
<? |
$this关键字
为了解决php类和对象中变量与属性的命名冲突和不确定性问题,引入了”$this”关键字来调用当前的对象。
在类中调用当前对象的属性和方法,必须使用”$this->”关键字;
$this在构造函数中指该构造函数所创建的新对象;
方法内的局部变量不属于对象,不使用$this关键字取值。
使用$this关键字,我们可以在类中调用对象属性或者方法。
1、调用变量
实例:
代码如下 | 复制代码 |
<?php |
2、调用方法
实例:
代码如下 | 复制代码 |
<?php |
系统函数
如phpinfo() ;这就是一个系统函数了,关于系统函数我们不多说,直接参考php教程或手册都会有。
用户自定义函数
php 引入函数的概念使程序变得简洁,运算效率更快。函数是实现某种功能的一段程序,这段程序相当于一个模块,需要时用一些简单的命令就可以调用出来使用,不用每次都重新编写。就好象电脑,我们不需要了解里面的复杂结构,只要了解它提供的功能直接使用即可。
php自定义函数-php虽然内置了很多实用的函数,可是不可能满足实际设计的需要,这时我们就需要自己创建函数。
基本结构形式:
代码如下 | 复制代码 |
function 函数名(参数){ |
function为声明函数;
函数名必须唯一,和变量名不同的是函数名不区分大小写;
function和函数名之间必须要有空格;
参数可以省略,也可以添加多个参数,用英文逗号隔开。
php调用函数-当我们定义了函数后,就可以通过以下结构形式对函数进行调用:
函数名(参数)
参数可以省略,但必须保留括号。
实例:
代码如下 | 复制代码 |
<?php |
函数的传递参数
如果函数定义了参数,那么在调用函数时就必须注意参数值的传递问题。php函数参数传递的方式有两种:按值传递和引用传递,默认为按值传递。
1、按值传递:
实例1:
代码如下 | 复制代码 |
<?php |
默认参数
php函数默认参数-如果用一个函数时并没有提供该参数的值,那么该参数将使用函数制定的默认值,默认值必须已经在函数定义时赋值。
实例:
代码如下 | 复制代码 |
<?php |
函数返回值
我们在设计程序时,很多时候不希望将函数的运行结果直接在浏览器显示出来,这时可以通过return语句先将函数值调用出来再进行其它操作。
php函数返回值实例:
代码如下 | 复制代码 |
<?php |
函数嵌套调用
函数的内部不但可以是一般的执行语句,也可以是函数,这就是php函数嵌套的用法。
函数嵌套只一个函数里面还调用了其它函数,这里要理解的是各函数均处于平行关系,函数的定义是独立的。就像一个容器里面可以放置很多个小容器,而这些容器彼此独立,各自容纳自己的东西。
实例:
代码如下 | 复制代码 |
<?php |
函数递归调用
什么是php递归函数?在解释这个概念之前,我们先来看一个数学例子。如果要算出n的阶乘,即n!,则首先应该知道(n-1)!,而要知道(n-1)!,又必须知道(n-2)!。以此类推,直至1!=1,再返回计算2!,3!…(n-1)!,n!,才能最终得出n阶乘的结果。
php函数递归调用的含义就是函数能够调用自身,这种直接或者简介调用函数本身的操作在php语言中是允许的,成之为递归函数。
实例:
代码如下 | 复制代码 |
<?php |
Cookie是什么意思?
Cookie是用来存储用户名、密码、访问该站点的次数等。在访问某个网站时,Cookie将html网页发送到浏览器中一个小段信息,以脚本的形式保存在客户端的计算机上。
Cookie有什么用?如果用服务器去记录个用户上站的次数,那么长期积累下来数据必然十分庞大,对服务器来说负担很中。因此,可以将数据存入到用户自己的计算机中,等到需要时服务器再读取用户计算机上的Cookie提取数据,这样一来服务器就不需要记录大量的数据。
一般来说,Cookie通过HTTP Headers从服务器端返回浏览器。首先,服务器端在响应中利用Set Cookie Header来创建一个Cookie。然后浏览器在请求中通过Cookie Header包含这个已经创建的Cookie,并且将它返回至服务器,从而完成浏览器的验证。
Cookie的创建
php创建一个Cookie需要调用setcookie()函数,其结构形式如下:
bool setcookie(string name[,string value[,int expiration[,string path[,bool secure]]]])
参数name表示Cookie的名称,其它参数可选;
参数value是存入Cookie的值;
参数expiration指定Cookie过期的时间;
参数path指定Cookie在服务器上的有效路径,用来设置Cookie将被发送到服务器的那一个文件夹下;
参数secure指定Cookie是否通过安全的https链接发送。
php cookie实例代码:
代码如下 | 复制代码 |
<?php |
cookie的访问
大多数变量只在内存占用空间,因此当php脚本终结时变量也从内存中被释放清空。而Cookie可以将变量的值长期存储到用户计算机的硬盘,当我们需要调用此变量的值时,读取该Cookie的名称即可。
前面一节Cookie的创建已经建立了一个命名为”c1″的Cookie,下面我们来测试一下这个Cookie是否成功创建了。
php 访问Cookie的实例:
代码如下 | 复制代码 |
<?php |
Cookie的时间
如果没有设置Cookie的有效时间,那么当关闭浏览器时Cookie就会消失。如果要保留Cookie,就必须给它设置一个有效的时间。
php Cookie时间设置方法:
time()+秒数
time()表示目前用户操作系统的时间,后面的秒数即是Cookie的有效时间。如果要制定一个特定的日期,可以使用mktime()函数,其结构形式如下:
mktime(时,分,秒,月,日,年)
如果要立即删除一个Cookie,可以将时间设置成过去的一个时间即可。
php Cookie时间设置例子:
代码如下 | 复制代码 |
setcookie("a","10",time()-60); /* 设置时间为之前60秒,其值立即被删 */ setcookie("a","10",time()+60); /* 设置有效时间为60秒 */ setcookie("a","10",mktime(0,0,0,11,1,2011)); /* 失效时间为2011年11月1日0点0分0秒 */ |
下面介绍一个利用Cookie设计的一个简单统计程序:
代码如下 | 复制代码 |
<?php |
Cookie数组
我们同样可以创建一个php cookie数组,下面通过实例介绍实现方法。
代码:
代码如下 | 复制代码 |
<?php setcookie('name[1]','Rose'); setcookie('name[2]','John'); setcookie('name[3]','Mikle'); if(is_array($_COOKIE['name'])){ /* 判断是否数组 */ foreach($_COOKIE['name'] as $name=>$value) { echo "$name:$value<br>"; } } else echo "不是数组"; ?> |
Cookie的限制
Cookie是用来存储用户浏览网站的重要信息,为了防止乱用导致用户的信息泄露,所以对Cookie作出一定的限制:
浏览器记录用户cookie大小限制在4KB以内的容量;
浏览器只保存某个站点服务器的Cookie数量限制在20个,如果超出这个数量,则之前保存的会被删除。
每个用户的浏览器最多只能访问300个Cookie。
用户可以在浏览器设置是否启用Cookie存储信息,因此,要使用Cookie存储信息,必须先确认浏览器中Cookie的功能是否已经打开。例如IE9浏览器,打开“属性”–“隐私”–“高级”选项,选中启用即可:
提示:浏览器创建了一个Cookie之后,对于每个针对该网站的请求都会在Header中带着这个Cookie。而且浏览器会一直发送,知道Cookie过期位置。不过对于其它网站的请求,Cookie是绝对不会跟着发送的。
相关文章
- eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
- 下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
- strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
废话不多说直接上代码复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header:...2014-06-07- Foreach 函数(PHP4/PHP5)foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。...2013-09-28
- free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
- PHP 函数 strip_tags 提供了从字符串中去除 HTML 和 PHP 标记的功能,该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。由于 strip_tags() 无法实际验证 HTML,不完整或者破损标签将导致更多的数...2014-05-31
SQL Server中row_number函数的常见用法示例详解
这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08- 分享一个PHP加密解密的函数,此函数实现了对部分变量值的加密的功能。 加密代码如下: /* *功能:对字符串进行加密处理 *参数一:需要加密的内容 *参数二:密钥 */ function passport_encrypt($str,$key){ //加密函数 srand(...2015-10-30
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
最近遇到一个问题,就是在使用php的mail函数发送utf-8编码的中文邮件时标题出现乱码现象,而邮件正文却是正确的。最初以为是页面编码的问题,发现页面编码utf-8没有问题啊,找了半天原因,最后找到了问题所在。 1.使用 PEAR 的...2015-10-21- 下面小编就为大家带来一篇C#中加载dll并调用其函数的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 这篇文章主要介绍了C#虚函数用法,实例分析了C#中虚函数的功能与基本使用技巧,需要的朋友可以参考下...2020-06-25
PHP编码转换函数mb_convert_encoding与iconv用法
文章来实现一个PHP编码转换函数mb_convert_encoding与iconv用法,希望例子能帮助到各位。 将一个短信接口代码从apache迁移到nginx+php-fpm后,发现无法发出短信了,查...2016-11-25