PHP面向对象程序设计__tostring()和__invoke()用法分析_php技巧

来源:脚本之家  责任编辑:小易  

在php的面向对象编程中,总会遇到 class test{ public static function test(){ self:func();static:func();} public static function func(){} } 可你知道self和static的区别么?其实区别很简单,只需要写几个demo就能懂:Demo for self:class Car { public static function model(){ self:getModel();} protected static function getModel(){ echo"This is a car model;} } Car:model();Class Taxi extends Car { protected static function getModel(){ echo"This is a Taxi model;} } Taxi:model();得到输出 This is a car model This is a car model 可以发现,self在子类中还是会调用父类的方法 Demo for static class Car { public static function model(){ static:getModel();} protected static function getModel(){ echo"This is a car model;} } Car:model();Class Taxi extends Car { protected static function getModel(){ echo"This is a Taxi model;} } Taxi:model();得到输出 This is a car model This is a Taxi model 可以看到,在调用static,子类哪怕调用的是父类的方法,但是父类方法中调用的方法还会是子类的方法(好绕嘴。在PHP5.3版本以前,static和self还是有一点区别,具体是什么,毕竟都是7版本的天下了。就不去了解了。总结呢就是:self只能引用当前类中的方法,而static关键字允许函数能够在运行时动态绑定类中的方法www.zgxue.com防采集请勿采集本网。

本文实例讲述了PHP面向对象程序设计__tostring()和__invoke()用法。分享给大家供大家参考,具体如下:

面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为

__tostring()魔术方法

对象是类的实例的意思 面向对象 面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。它是从现实世界中

将一个对象当做一个字符串来使用时,会自动调用该方法,并且在该方法中,可以返回一定的字符串,以表明该对象转换为字符串之后的结果。该魔术方法比较常用。

对数据的操作

注意:如果没有定义该方法,则对象无法当做字符串来使用!

它是一种通用程序设计语言,支持多重编程模式,例如过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计和设计模式等。3、c#。C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。C#以.

类里面未定义__tostring()方法的例子:

1、易维护 采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。2、质量高 在设计时,可重用现有的,在以前

<?phpini_set('display_errors', 1);class A{ public $name; public $age; public $sex; function __construct($name, $age, $sex){ $this->name = $name; $this->age = $age; $this->sex = $sex; }}$obj1 = new A('张三', 15, '男');echo $obj1; //echo 后面为字符串,而对象不是字符串,会报错$v1 = "abc" . $obj1; //.为字符串连接符,会报错$v2 = "abx" + $obj1; //+为加法运算符,会报错?>

3个报错内容分别为

Catchable fatal error: Object of class A could not be converted to string

Catchable fatal error: Object of class A could not be converted to string

Notice: Object of class A could not be converted to int

类里面定义__tostring()方法

<?phpini_set('display_errors', 1);class A{ public $name; public $age; public $sex; function __construct($name, $age, $sex){ $this->name = $name; $this->age = $age; $this->sex = $sex; } function __tostring(){ $str = "姓名:" . $this->name; $str .= "年龄:" . $this->age; $str .= ",性别:" . $this->sex; return $str; //这里可以返回“任何字符串内容” }}$obj1 = new A('张三', 15, '男');echo $obj1; //调用__tostring(),不会报错?>

运行结果

姓名:张三年龄:15,性别:男

__invoke()魔术方法

将对象当作函数来使用时,会自动调用该方法。通常不推荐这么做。

class A{ function __invoke(){ echo "<br />我是一个对象呀,你别把我当作一个函数来调用啊!"; }}$obj = new A();$obj(); //此时就会调用类中的方法:__invoke()

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

去php100下载后面的面向对象视频看看,照着练习,再搜索一下面向对象电子书看看。还有设计模式也要看。多练习就可以了内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • php中__tostring()方法用法示例
  • php面向对象全攻略 (十一)__tostring()用法 克隆对象 __call处理调用错误
  • php 5.3新增魔术方法__invoke概述
  • php面向对象程序设计中self与static的区别分析
  • php面向对象中new self()与 new static()的区别浅析
  • php面向对象中static静态属性和静态方法的调用
  • php 面向对象 final类与final方法
  • php面向对象之旅:深入理解static变量与方法
  • php面向对象中static静态属性与方法的内存位置分析
  • php面向对象编程之深入理解方法重载与方法覆盖(多态)
  • php面向对象程序设计(oop)之方法重写(override)操作示例
  • php数组编码gbk与utf8互相转换的两种方法
  • php自定义扩展名获取函数示例
  • php 获取远程文件内容的函数代码
  • php中的错误处理、异常处理机制分析
  • php实现的简单对称加密与解密方法实例小结
  • php根据某字段对多维数组进行排序的方法
  • win下如何安装php的apc拓展
  • 用php实现像jsp,asp里application那样的全局变量
  • php 静态属性和静态方法区别详解
  • php curl 伪造ip来源的实例代码
  • 新手请教,php怎么设计面向对象的程序?
  • 如何理解PHP面向对象程序设计
  • 面向过程程序设计和面向对象程序设计的区别和联系分别是什么
  • 面向对象程序设计是将数据,方法通过什么成一个整体
  • 帮忙 举例说明什么是面向对象程序设计的思想? 谢谢
  • Java面向对象程序设计 这句话中的对象指的是什么?
  • 面向对象程序设计把数据和( )封装在一起.
  • 面向对象的语言主要有哪些
  • 面向对象程序设计的优点是什么?
  • 面向过程程序设计和面向对象程序设计的区别和联系分别是什么
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php技巧php面向对象程序设计入门教程php数组(array)操作技巧大全php基本语法入门教程php运算与运算符用法总结php字符串(string)用法总结php+mysql数据库操作入门教程php常见数据库操作技巧汇总php中__tostring()方法用法示例php面向对象全攻略 (十一)__tostring()用法 克隆对象 __call处理调用错误php 5.3新增魔术方法__invoke概述php面向对象程序设计中self与static的区别分析php面向对象中new self()与 new static()的区别浅析php面向对象中static静态属性和静态方法的调用php 面向对象 final类与final方法php面向对象之旅:深入理解static变量与方法php面向对象中static静态属性与方法的内存位置分析php面向对象编程之深入理解方法重载与方法覆盖(多态)php面向对象程序设计(oop)之方法重写(override)操作示例php数组编码gbk与utf8互相转换的两种方法php自定义扩展名获取函数示例php中的错误处理、异常处理机制分析php实现的简单对称加密与解密方法实例小结php根据某字段对多维数组进行排序的方法win下如何安装php的apc拓展用php实现像jsp,asp里application那样的全局变量php 静态属性和静态方法区别详解php curl 伪造ip来源的实例代码php中json_decode()和json_encodphp 数组和字符串互相转换实现方php中使用curl实现get和post请求php中iconv函数使用方法php日期转时间戳,指定日期转换成php 页面跳转到另一个页面的多种php中文处理 中文字符串截取(mb_php下intval()和(int)转换使用与利用phpexcel实现excel数据的导入phpmyadmin 配置文件详解(配置)php多进程模拟并发事务产生的问题小结用php伪造referer突破网盘禁止外连的代码thinkphp在低版本nginx 下支持pathinfo的php乱码问题,utf-8乱码常见问题小结php-accelerator网站加速php缓冲的方法2款php无限级分类实例代码php 抽象类的简单应用php中domdocument简单用法示例代码(xml创解析php中var_dump,var_export,print_r三php文件锁函数flock()详细介绍
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved