[开心学php100天]第四天:完爆php魔力函数

本文详细介绍了PHP中的特殊函数,包括构造函数、析构函数、自动加载等,并展示了如何利用这些函数实现优雅的代码设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本期格言

当我们天资不够强大时,与其花500%的精力做一个单线程技术高手,不如花较少的精力做一个聪明的多线程程序员。

本期扯淡

湖南卫视的“我是歌手”第一季终结,歌王产生。也许很多人心目中的歌王都不一样,但是不可否认的是,羽泉确确实实得到了“官方”宣布和“大家都认可”的歌王,我个人分析原因如下:

其实各个歌手实力都很强,各有特色,真没有歌王不歌王之分。如获得神给予天赋的林志炫、高音黄妈、全身都在摇滚的周晓鸥、细腻无比的杨宗纬以及其他各有特色的歌手。但是我个人认为只有羽泉是最聪明的歌手,论音色也许比不过林志炫、论感人也许比不过杨宗纬、论高音高不过妈、论摇滚得剃光头,所以羽泉采取的策略是把自己融入观众,而不是强迫观众融入他们的歌。最终在制胜局拿出最猛的杀手锏。

这里还要写一个经我加工过的神级分析:给羽泉投票时,喜欢“羽”有一票,喜欢“泉”有一票,喜欢邓超有一票,喜欢孙俪有一票,喜欢白百何有一票,支持3G天翼有一票,家里正在用立白洗衣液的有一票。因此羽泉的得票不第一,实在是天理难容了。何况立白和天翼还是本节目赞助商。

扯淡扯上程序员也一样:当我们猛然出道时发现Java高手前辈实在太多了,赤膊追赶也难以追上,毕竟人家的开发经验放在那;再发现c#,这厮版本和功能升级的也太快了,裸体跟着学也难以全部掌握成为牛人;再看看python或者ruby,学得好的人绝对是大牛而且是少数,学的不好的人基本上就是shit;因此我们不如学php,因为喜欢淘宝的有一票、喜欢mysql的有一票、喜欢apache的有一票、喜欢wordpress的有一票、喜欢dz论坛的有一票、喜欢centos的有一票,不多说了,羽泉是歌王,我们何不想办法成为程序员之王呢。

 

正文:魔力函数

为何叫魔力函数,或有的地方叫做魔幻函数。原因很简单,没有哪个语言能让你这么简单的把它从头到尾、从里到外如此方便和简单的完爆一遍。爆完之后,会让你有种把php 完完全全征服的感觉。这种感觉在java中是很难找到的,c#呢?oh,谈都不用谈吧。

(一)、 __construct 构造函数

构造函数的意思代表,它是第一个被爆的函数,不管你想不想爆,反正它会自动爆。

运行结果,是自爆第一次(不管你想不想),然后才会爆第二次。

这里有个知识点是:传参数也很简单,你可以__construct($arg1,$arg2);

同理也可以用 func_get_args这个函数来得到未知个数的参数。譬如

注意,用了exit,则mydo方法则不会运行,也就是你想手动爆是不可能的了。类似于c#的response.end。

这个构造函数的用法大部分被用在类继承上,也可以直接用在页面输出内容上,根据参数的个数来加载不同的内容。

(二)、__destruct() 析构函数

析构函数原则上的解释是:当删除一个对象或对象操作终止的时候,自动的调用该方法,所以可进行释放资源之类的操作。

实际上咱不要想太多,用了php,根本不需关注此函数。资源释放一切由zend负责,而且php也不适合在类里面做大数据量超级循环的事情,否则那真是自爆了。一般实际项目中,会通过继承的方式做一些日志的记录等小小的事情。如果有百万级数据要在你的类处理,要么说明你接到大项目你要发了,要么就是咱在做梦。

(三)、__autoload 自动加载

这个函数只有一个地方用得着。就是 自动加载函数文件。

上述列子请勿直接拷贝运行,搞成中文是为了更容易看懂。

(四)、__call

调用不存在的类的函数的时候得处理方法,__call 失败,就调用父类方法,依此类推。

这个函数个人认为是php最给力的函数。由此可以写出很亮的代码 譬如:

当然上面是一个列子,大家可以举一反三,在数据层,业务层都可以使用,尤其在构建一个虚拟实体或虚拟类时可以实现可配置化很高的代码写法。

(五)、__get 、__set

当属性未定义时,get或者set时,会自动调用

用这个办法,依然可以写出很亮的代码

(六)、__clone()

当对象被克隆时,执行的函数

这个函数实际项目中也有,譬如做新闻网站,某个新闻的类叫做news, 用户可能会复制一条同样的新闻进行采集,此时我们可以在__clone()函数中,对某些标识值进行处理。如

(七)、__toString()

用法看例子直接明了

(八)、__sleep __wakeup

这个函数只在类被序列化或者反序列化时自动调用。看

以上为魔幻函数,实际上这是php最亮的部分没有之一。

要在后期实际项目中写出很man的程序必须首先了解这些魔幻函数。

譬如我们在java或者.net中做数据层时,需要建立实体类,数据库稍微一更改就要修改类文件。而在php中就没必要这么麻烦。可以这样

当然,这只是一个列子。正式使用php开发实际项目,是不建议使用这种 hibernate的实体类思想。

在设计实际业务类的基类时,用魔幻函数更有有用。

转自:程序员在囧途

http://www.shenyisyn.org/2013/04/13/php100_4.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值