php 面向对象详解_常用的自动调用的方法

 更新时间:2016年11月25日 15:14  点击:1762
php 面向对象详解_常用的自动调用的方法,我们会用到_autoload,__clone(),__tostring() 三个函数的教程。

第七章(10)面向对象详解_常用的自动调用的方法
__tostring() 是直接输入对象时自动调用的方法.
<如果想在直接输入对象时得到什么结果,可以将想要得到结果的代码写在__tostrimg()里面>
__clone() 对新克隆出来的副本进行属性初始化时自动调用的方法.<如果一个对象想做成两个对象,而不是一个对象有两个名称时,可以使用__clone()的方法,此时在__clone()里面的$this代表副本本身,$that代表原本本身,在书写时不能直接写成 原本对象名称=副本对象名称,这仅代表一个对象有两个名称,应写成 原本对象名称=clone副本对象名称,这样才是真正两个同样的对象,副本的__clone()里面还可以加上其它的输出>
__call(里面要有两个参数,调用不存在的方法名称传给第一个参数,不存在的列表传给第二个参数) 调用不存在对象方法时自动调用的方法.
__autoload(调用其它php中类的名称传给此参数) 调用其它php里面的类到本php中产生对象时自动调用的方法.<__autoload()并不是写在本对象内部的,而是在对象外部使用的方法>

serialize

 

第七章(11)面向对象详解_对象的串行化和反串行化
串行化就是把对象转化成二进制的字符串 (要串行化的对象名称).
反串行化就是把二进制化字化为对象 unserilize(要反串行化的对象名称).
符串转串行化标准:
$r1=new Ren("张三",20,"男");
$str=($r1<要串行化的对象>);
$file=fopen("tmp.txt"<串行化保存到的文件地址>,"w"<写>);
fwrite($file,$str);
fclose($file);
反串行化标准:
include"ren.php"<将串行化对象的php移入反串行化的php中>;
$file=fopen("tmp.txt"<要反串行化的文件地址>,"r"<读>);
$str=fread($file,filesize("tmp.txt"<读的长度,填文件地址就是文件有好长就读好长>));
fclose($file);
$r=unserilize($str);
$r->shuohua();
在什么情况下将对象串行化:
1.对象在网络中传输的时候.
2.将对象存入文件或数据库的时候.
__sleep(){$arr=array(要串行化的属性);return $arr;}串行化部分属性时自动调用的方法.
__wakeup()反串行化时自动调用的方法<可以将串行化的属性在反串行化时初始值>.
     第七章(12)面向对象详解_抽象方法和抽象类
抽象方法:在类里面没有方法体的方法就是抽象方法.
abstract<抽象方法关键字> function 方法名();.
抽象类:抽象类不能实例化对象的,此类就是抽象类,抽象类不能实例化 对象,就要在此类前面加 abstract来修饰.
抽象类的用途:就相当于一个规范,如果要抽象类里面的原有的功能实现就必须以抽象类作为父类做一个子类,然后覆盖完整抽象类里面的抽象方法,才能使抽象类里面的功能一一实现.

来看看php 面向对象详解_构造方法与析构方法吧,我们经常有关于构造方法与析构函数的实例教程喽。

第七章(4)面向对象详解_构造方法与析构方法
特殊的引用$this的使用
实例说明:
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 function shuohua()
 {echo "我的姓名是:".$this->xingming.",我的年龄是:".$this->nianling.",我的性别是:".$this->xingbie."<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
}
$r1=new Ren();    $r2=new Ren();    $r3=new Ren();
$r1->xingming="张三";    $r2->xingming="李四";    $r3->xingming="王五";
$r1->nianling=90;    $r2->nianling=23;    $r3->nianling=41;
$r1->xingbie="男";    $r2->xingbie="女";    $r3->xingbie="男";
//人1.2.3各自说出自己的姓名.年龄.性别:
$r1->shuohua();    $r2->shuohua();    $r3->shuohua();
输出结果:
我的姓名是:张三,我的年龄是:90,我的性别是:男
我的姓名是:李四,我的年龄是:23,我的性别是:女
我的姓名是:王五,我的年龄是:41,我的性别是:男
$this的作用:代表对象的一个属性,相当于第一人称"我"的概念.
构造方法的特点:名称与类相同,对象一产生的时候自动调用,去初始化成员属性.
实例说明:(此实例是在php4里面的声明方法)
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 function Ren($xingming,$nianling,$xingbie)
 {
  $this->xingming=$xingming;
  $this->nianling=$nianling;
  $this->xingbie=$xingbie;
 }
 function shuohua()
 {echo "我的姓名是:".$this->xingming.",我的年龄是:".$this->nianling.",我的性别是:".$this->xingbie."<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
}
$r1=new Ren("张三",90,"男");
$r2=new Ren("李四",23,"女");
$r3=new Ren("王五",41,"男");
$r1->shuohua();    $r2->shuohua();    $r3->shuohua();
此例如上例输出结果完全相同.
在php5版本中的构造方法是function__construct(),不用写类名,作用相同.
析构方法__destruct()在程序结束前释放要释放的东西的方法.
实例说明:
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 function __construct($xingming,$nianling,$xingbie)
 {
  $this->xingming=$xingming;
  $this->nianling=$nianling;
  $this->xingbie=$xingbie;
 }
 function shuohua()
 {echo "我的姓名是:".$this->xingming.",我的年龄是:".$this->nianling.",我的性别是:".$this->xingbie."<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
 function __destruct()
 {echo $this->xingming."再见<br>";}
}
$r1=new Ren("张三",90,"男");
$r2=new Ren("李四",23,"女");
$r3=new Ren("王五",41,"男");
$r1->shuohua();    $r2->shuohua();    $r3->shuohua();
输出结果:
我的姓名是:张三,我的年龄是:90,我的性别是:男
我的姓名是:李四,我的年龄是:23,我的性别是:女
我的姓名是:王五,我的年龄是:41,我的性别是:男
王五再见    李四再见    张三再见

我们主要讲一下php面向对象的一些用法与实例教程例子等哦,开始我们只讲一下面向对象的概念与php的简单例子教程哦。

 

第七章(1)面向对象详解_面向对象的概念
什么是类:组成一个对象的过程称为类.
什么是对象:类组成的东西叫对象.
类与对象之间的关系:对象由类组合而来,先有类才有对象.
什么是成员属性:定义成员静态描述. 如:人的姓名,性别,身高,体重......
什么是成员方法:定义成员动态描述.能实现一些什么功能 如:人能吃饭,走路,开车,说话......
如何去抽象一个类:
class 类名 如:人类
{
 成员属性:姓名,身高,体重...
 成员方法:走路,说话,吃饭,开车...
}
例题:
class关键字 Person类名首字母要大写
{
 成员属性
 var关键字 $name;姓名
 var $age;年龄
 var $sex;性别...
 成员方法
 function关键字 say()
  {echo "我在说话";}
 function run()
  {echo "我在走路";}
 function eat()
  {echo "我在吃饭";...}
}
产生实例化对象:
$P1=new关键字 Person类名;
$P2=new Person;

第七章(3)面向对象详解_对象实例化及使用
如何实例化对象
实例说明:
class Ren
{
 var $xingming;
 var $nianling;
 var $xingbie;
 var $shouji;
 function shuohua()
 {echo "我在说话<br>";}
 function zoulu()
 {echo "我在走路<br>";}
 function chifan()
 {echo "我在吃饭<br>";}
}
class shouji
{
 var $pinpai;
 var $yanse;
 var $chiceng;
 function dadianhua()
 {}
 function jiedianhua()
 {}
 function faxinxi($ren,$xinxi)
 {$ren->shouji->shouxinxi($xinxi);}
 function shouxinxi($xinxi)
 {echo "接信息".$xinxi."<br>";}
}
//实例化.人:
$r1=new Ren();    $r2=new Ren();    $r3=new Ren();
//实例化.人的姓名:
$r1->xingming="张三";    $r2->xingming="李四";    $r3->xingming="王五";
//实例化.手机:
$s1=new shouji();    $s2=new shouji();    $s3=new shouji();
//实例化.人用手机:
$r1->shouji=$s1;    $r2->shouji=$s2;    $r3->shouji=$s3;
//实例化.人发信息:
$r1->shouji->faxinxi($r2,"hello");
输出:接信息 hello

下面是一些常用的php数组函数,我们会测试各位php 数组 array的用法哦。

下面是一些常用的php数组函数,我们会测试各位php 数组 array的用法哦

第六章(3)数组的相关处理函数
current(数组名称) 输出数组中一个字符串的值,从第一个起.
key(数组名称) 输出数组中一个下标,从第一个起.
next(数组名称) 控制数组指针向后移动.
prev(数组名称) 控制数组指针向前移动.
end(数组名称) 控制数组指针移向最后一位.
reset(数组名称) 控制数组指针移向第一位.
array_change_key_case(1.目标数组 2.CASE_UPPER大写 或 CASE_LOWER小写) 将数组下标全部改为大写或小写.
array_chunk(1.目标数组 2.分解个数 3.输出布尔型的真或假) 将一个数组分解成多个小数组.
array_count_values(数组名称) 用来计算数组中各值出现的次数.
array_fill(1.下标从几开始 2.输出多少个 3.他们的值是什么) 用来做初始化数组.
array_filter(1.目标数组 2.使用者定义的函数) 过滤函数,自定义以什么标准为真,以什么标准为假,此函数可以自动过滤掉假的字符串.
array_flip(目标数组) 将下标变值,值变下标.
array_sum(目标数组) 计算目标数组中所有元素值的总和.
array_unique(目标数组) 去除目标数组中重复的值.
array_values(目标数组) 将目标数组中所有下标都去掉,重新从"0"开始计算此函数中值的下标.
array_keys(目标数组) 输出目标数组中的所有下标.
in_array(1.要找的东西 2.目标数组 3.是否严格按照数据类型查找,是就输true) 查找目标数组中有无查找的数据.
array_search(1.要找的东西 2.目标数组 3.是否严格查找) 查找目标数组中有无查找的数据,有则输出此数据的下标.
array_key_exists(1.要找的下标 2.目标数组) 查找目标数组中有无查找的下标,有则输出true,无则输出false.
extract(目标数组) 将数组转换成变量.
compact(要转换成数组的变量下标) 将多个变量转换成数组.
数组与栈 (先进后出)
array_push(1.目标数组 2.压入栈的值) 压入栈函数.
array_pop(目标数组) 弹出栈函数.
数组与队 (先进先出)
array_unshift(1.目标数组 2.压入对的值) 压入对函数.
array_shift(1目标数组) 弹出对函数.
忽略键名的数组排序:
sort(目标数组) 从小到大的排序.
rsort(目标数组) 从大到小的排序.
保留键名的数组排序:
asort(目标数组) 保留原下标,值从小到大的排序.
arsort(目标数组) 保留原下标,值从大到小的排序.
自然排序法排序:
natsort(目标数组) 保留原下标,值从大到小的排序,不区分大小写.
natcasesort(目标数组) 保留原下标,值从小到大的排序,不区分大小写.
array_merge(1.目标数组 2.目标数组......) 合并多个数组.
array_diff(1.被比数组 2.比数组 3.比数组......) 求数组的差积.
array_intersect(1.被比数组 2.比数组 3.比数组......) 求数组的交积.
  

[!--infotagslink--]

相关文章

  • java8如何用Stream查List对象某属性是否有重复

    这篇文章主要介绍了java8如何用Stream查List对象某属性是否有重复的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-11
  • php 中file_get_contents超时问题的解决方法

    file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • HTTP 408错误是什么 HTTP 408错误解决方法

    相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • R语言 如何删除指定变量或对象

    这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-06
  • ps把文字背景变透明的操作方法

    ps软件是现在非常受大家喜欢的一款软件,有着非常不错的使用功能。这次文章就给大家介绍下ps把文字背景变透明的操作方法,喜欢的一起来看看。 1、使用Photoshop软件...2017-07-06
  • intellij idea快速查看当前类中的所有方法(推荐)

    这篇文章主要介绍了intellij idea快速查看当前类中的所有方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-09-02
  • JavaScript预解析,对象详解

    这篇文章主要介绍了JavaScript预解析,对象的的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助...2021-11-10
  • Mysql select语句设置默认值的方法

    1.在没有设置默认值的情况下: 复制代码 代码如下:SELECT userinfo.id, user_name, role, adm_regionid, region_name , create_timeFROM userinfoLEFT JOIN region ON userinfo.adm_regionid = region.id 结果:...2014-05-31
  • js导出table数据到excel即导出为EXCEL文档的方法

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta ht...2013-10-13
  • mysql 批量更新与批量更新多条记录的不同值实现方法

    批量更新mysql更新语句很简单,更新一条数据的某个字段,一般这样写:复制代码 代码如下:UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value';如果更新同一字段为同一个值,mysql也很简单,修改下where即...2013-10-04
  • ps怎么制作倒影 ps设计倒影的方法

    ps软件是一款非常不错的图片处理软件,有着非常不错的使用效果。这次文章要给大家介绍的是ps怎么制作倒影,一起来看看设计倒影的方法。 用ps怎么做倒影最终效果&#819...2017-07-06
  • js基础知识(公有方法、私有方法、特权方法)

    本文涉及的主题虽然很基础,在许多人看来属于小伎俩,但在JavaScript基础知识中属于一个综合性的话题。这里会涉及到对象属性的封装、原型、构造函数、闭包以及立即执行表达式等知识。公有方法 公有方法就是能被外部访问...2015-11-08
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • PHP 验证码不显示只有一个小红叉的解决方法

    最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
  • c#中分割字符串的几种方法

    单个字符分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 输出下面的结果: ab de...2020-06-25
  • js控制页面控件隐藏显示的两种方法介绍

    javascript控制页面控件隐藏显示的两种方法,方法的不同之处在于控件隐藏后是否还在页面上占位 方法一: 复制代码 代码如下: document.all["panelsms"].style.visibility="hidden"; document.all["panelsms"].style.visi...2013-10-13
  • 连接MySql速度慢的解决方法(skip-name-resolve)

    最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21
  • 如何在Spring WebFlux的任何地方获取Request对象

    这篇文章主要介绍了如何在Spring WebFlux的任何地方获取Request对象,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下...2021-01-26