本期格言: 当我们天资不够强大时,与其花500%的精力做一个单线程技术高手,不如花较少的精力做一个聪明的多线程程序员。
本期扯淡:
湖南卫视的“我是歌手”第一季终结,歌王产生。也许很多人心目中的歌王都不一样,但是不可否认的是,羽泉确确实实得到了“官方”宣布和“大家都认可”的歌王,我个人分析原因如下:
其实各个歌手实力都很强,各有特色,真没有歌王不歌王之分。如获得神给予天赋的林志炫、高音黄妈、全身都在摇滚的周晓鸥、细腻无比的杨宗纬以及其他各有特色的歌手。但是我个人认为只有羽泉是最聪明的歌手,论音色也许比不过林志炫、论感人也许比不过杨宗纬、论高音高不过妈、论摇滚得剃光头,所以羽泉采取的策略是把自己融入观众,而不是强迫观众融入他们的歌。最终在制胜局拿出最猛的杀手锏。
这里还要写一个经我加工过的神级分析:给羽泉投票时,喜欢“羽”有一票,喜欢“泉”有一票,喜欢邓超有一票,喜欢孙俪有一票,喜欢白百何有一票,支持3G天翼有一票,家里正在用立白洗衣液的有一票。因此羽泉的得票不第一,实在是天理难容了。何况立白和天翼还是本节目赞助商。
扯淡扯上程序员也一样:当我们猛然出道时发现Java高手前辈实在太多了,赤膊追赶也难以追上,毕竟人家的开发经验放在那;再发现c#,这厮版本和功能升级的也太快了,裸体跟着学也难以全部掌握成为牛人;再看看python或者ruby,学得好的人绝对是大牛而且是少数,学的不好的人基本上就是shit;因此我们不如学php,因为喜欢淘宝的有一票、喜欢mysql的有一票、喜欢apache的有一票、喜欢wordpress的有一票、喜欢dz论坛的有一票、喜欢centos的有一票,不多说了,羽泉是歌王,我们何不想办法成为程序员之王呢。
正文:魔力函数
为何叫魔力函数,或有的地方叫做魔幻函数。原因很简单,没有哪个语言能让你这么简单的把它从头到尾、从里到外如此方便和简单的完爆一遍。爆完之后,会让你有种把php 完完全全征服的感觉。这种感觉在java中是很难找到的,c#呢?oh,谈都不用谈吧。
(一)、 __construct 构造函数
构造函数的意思代表,它是第一个被爆的函数,不管你想不想爆,反正它会自动爆。
class test
{
function __construct()
{
echo '自爆第一次';
}
function mydo()
{
echo '手动爆一次';
}
}
$newObj = new test();
$newObj->mydo();
运行结果,是自爆第一次(不管你想不想),然后才会爆第二次。
这里有个知识点是:传参数也很简单,你可以__construct($arg1,$arg2);
同理也可以用 func_get_args这个函数来得到未知个数的参数。譬如
class test
{
function __construct()
{
$getargs=func_get_args();
if(count($getargs)<2)
exit("参数必须有二个");
}
function mydo()
{
echo "手动爆一次";
}
}
$newObj = new test("aaa"); //构造函数中$getargs[0] 的值就是aaa
$newObj->mydo();
注意,用了exit,则mydo方法则不会运行,也就是你想手动爆是不可能的了。类似于c#的response.end。
这个构造函数的用法大部分被用在类继承上,也可以直接用在页面输出内容上,根据参数的个数来加载不同的内容。
(二)、__destruct() 析构函数
析构函数原则上的解释是:当删除一个对象或对象操作终止的时候,自动的调用该方法,所以可进行释放资源之类的操作。
实际上咱不要想太多,用了php,根本不需关注此函数。资源释放一切由zend负责,而且php也不适合在类里面做大数据量超级循环的事情,否则那真是自爆了。一般实际项目中,会通过继承的方式做一些日志的记录等小小的事情。如果有百万级数据要在你的类处理,要么说明你接到大项目你要发了,要么就是咱在做梦。
(三)、__autoload 自动加载
这个函数只有一个地方用得着。就是 自动加载函数文件。
class 水果
{
function __construct($用户的选择)
{
if($用户的选择==1)
$苹果的对象=new 苹果(); //这里会自动加载一个 啃苹果需要的函数.php
else
$榴莲=new 榴莲(); //这里就不会加载 多余的php文件
}
}
class 榴莲
{
//太臭,但是我爱吃
}
class 苹果
{
//不臭,但是我不爱吃
function __autoload()
{
require("啃苹果需要的函数.php");
}
}
$newObj = new 水果(1);
上述列子请勿直接拷贝运行,搞成中文是为了更容易看懂。
(四)、__call
调用不存在的类的函数的时候得处理方法,__call 失败,就调用父类方法,依此类推。
这个函数个人认为是php最给力的函数。由此可以写出很亮的代码 譬如:
class data
{
function __call($name,$arguments)
{
//$name代表方法名 $arguments代表参数
if($name=="getSqlServer")
{
// 执行sqlserver相关的sql语句
}
else
{
//执行mysql相关的sql语句
}
}
}
$newObj = new data();
$newObj->getSqlServer("select top 10 * from table1"); //getSqlserver 这个方法并不需要预先定义
$newObj->getMysql("select * from table1 limit 0,10");//注意mysql是没有 top n的语法的
当然上面是一个列子,大家可以举一反三,在数据层,业务层都可以使用,尤其在构建一个虚拟实体或虚拟类时可以实现可配置化很高的代码写法。
(五)、__get 、__set
当属性未定义时,get或者set时,会自动调用
class data
{
function __get($name) //$name 代表属性名
{
if($name=="H7N9") //变量为H7N9没有定义它,则调用__get,定义了,则不会进入
return "禽流感";
else
return "不要扯淡";
}
}
$newObj = new data();
echo $newObj->H7N9;
echo $newObj->H100N30;
用这个办法,依然可以写出很亮的代码
(六)、__clone()
当对象被克隆时,执行的函数
class data
{
var $myname="shenyisyn";
function __clone()
{
$this->myname="假的shenyisyn";
}
}
$newObj = new data();
echo $newObj->myname;
$obj2=clone $newObj;
echo $obj2->myname;
这个函数实际项目中也有,譬如做新闻网站,某个新闻的类叫做news, 用户可能会复制一条同样的新闻进行采集,此时我们可以在__clone()函数中,对某些标识值进行处理。如
class news
{
var $newsid=1;
function __clone()
{
//在数据库中执行 ID为1的新闻,让其被引用或者采集字段加+1
}
}
$newObj = new news();
$news2=clone $newObj;//终于有外站用户来采集我站新闻了,我好欢喜
(七)、__toString()
用法看例子直接明了
class news
{
var $newstitle="美国国务卿克里抵京访华";
function __toString() //不加这个函数,则会出现 对象无法按字符串输出
{
return "这是一个新闻对象,我只能给你一个标题";
}
}
$newObj = new news();
echo $newObj; //额。。手误了,忘记这货不是一个字符串,不过照样可以爆出来
(八)、__sleep 、__wakeup
这个函数只在类被序列化或者反序列化时自动调用。看
class news
{
var $user1="卞工";
var $user2="猪刚烈";
var $user3="学姐";
function __sleep()
{
echo "学姐是保密的,不会让你序列化";
return array("user1","user2");//user1和user2 必须和上面定义的变量名是一致的。
}
}
$newObj = new news();
$obj=serialize($newObj);
var_dump($obj);
以上为php魔力函数,实际上这是php最亮的部分没有之一。
要在后期实际项目中写出很man、很sexy的程序必须首先了解这些魔力函数。
欢迎猛戳我简陋的个人官网 : www.shenyisyn.org
分享到:
相关推荐
第4天:Python 流程控制 第5天:Python 函数 第6天:Python 模块和包 第7天:Python 序列 第8天:Python 列表 第9天:Python 元组 第10天:Python 类与对象 第11天:Python dictionary 第12天:Python 之引用 第13天...
一、关系运算: 4 1. 等值比较: = 4 2. 不等值比较: <> 4 3. 小于比较: < 4 4. 小于等于比较: <= 4 5. 大于比较: > 5 6. 大于等于比较: >= 5 7. 空值判断: IS NULL 5 8. 非空判断: IS NOT NULL 6 9. LIKE比较: LIKE ...
**第四天:字符串与文件操作** - 字符串处理函数:concatenation, substring, strlen, strpos等 - 文件系统操作:读写文件、目录操作、上传下载 **第五天:错误与异常处理** - PHP错误类型:致命错误、警告、通知 -...
《工程数学-第四版复变函数答案 西安交通大学版》是针对西安交通大学出版的《工程数学》第四版中复变函数部分的学习辅助资料。复变函数是高等数学的一个重要分支,它研究的是复数域上的解析函数及其性质,对于理解和...
工程数学 复变函数 第四版 高等教育出版社 西安交大高等数学教研室 编 PDF
《复变函数》第四版,作者为于家荣,是一本深入浅出地介绍复变函数理论的经典教材。这本书包含了丰富的习题,旨在帮助学生巩固理论知识,提升解决实际问题的能力。 习题解答通常包含对基本概念的复习、定理的运用...
4. **第四天:函数** - 自定义函数:声明和调用函数,参数传递,返回值。 - 内置函数:例如echo,print,isset,unset,empty等常用函数。 5. **第五天:数组** - 数组的定义:一维数组、二维数组、关联数组。 ...
- **四月、六月、九月、十一月**:这些月份有30天,如果日期为30,则返回下个月的第一天;否则日期加一。 - **一月、三月、五月、七月、八月、十月**:这些月份有31天,如果日期为31,则返回下个月的第一天;否则...
还有以下两个成员函数:一个用于初始化学生姓名、学号、性别和年龄的构造函数,一个用于输出学生信息的函数。编写一个主函数。声明一个学学生对象。然后调用成员函数在屏幕输出学生信息。 编程环境:vs2010,语言:...
### 第四天:字符串和正则表达式 字符串处理是PHP中常见任务之一,第四天会教授字符串函数,如拼接、查找、替换等。正则表达式是强大的文本匹配工具,学习使用preg_match、preg_replace等函数进行复杂文本操作。 ##...
这是一个PHP函数,能很轻松的替换字符串中包含的繁体字;可以个别字段替换,也可以整篇文章替换,操作简单,使用方便。【已经内涵了字库文件】 详情请看:http://blog.very68.com/myworks/174635.html; ########## ...
根据提供的文件信息:“复变函数论课后题答案-(第四版-钟玉泉)”,本文将详细介绍复变函数论的基本概念、理论体系及其在第四版教材中的应用,并针对该教材中的习题进行深入解析。 ### 复变函数论概述 #### 1.1 ...
第四版的运筹学习题答案提供了对一系列运筹学理论与方法的实践应用解析,帮助学生和研究人员理解并掌握运筹学的基本概念、模型构建和求解技巧。 运筹学的核心内容包括线性规划、整数规划、动态规划、网络流、图论、...
EditPlus的php函数提醒,自动完成 完整版 导入压缩包中是两个文件即可 操作步骤如下:下载后解压 工具——参数——设置和语法——新建一个PHP类型文件 往下一点设置“语法文件”和“语法完成” 分别选择php.stx和...
【标题】:“当年我学PHP时整理的学习笔记” 这篇学习笔记是作者在学习PHP编程语言的过程中逐步积累并整理的,涵盖了初学者从基础到进阶的一些关键知识点。PHP是一种广泛应用于网页开发的服务器端脚本语言,尤其在...
4. **数论算法**:Miracl库包含了诸如快速傅里叶变换(FFT)、欧几里得算法、扩展欧几里得算法、模逆运算等数论相关的算法。这些算法在密码学中起着基础性的作用,如计算模逆用于RSA的解密过程,或欧几里得算法用于...
- **内置函数**:PHP提供了大量的内置函数来完成各种任务,如字符串处理、数学运算等。 - **自定义函数**:允许用户根据需要创建自己的函数来封装特定功能。 #### 4. 文件与目录操作 - **文件读写**:使用fopen()、...
复变函数与积分变换第四版课后题答案李红,答案较全,便于使用者全面的寻找答案
4. **第四章**:可能会讨论复积分,包括Cauchy积分定理和Cauchy积分公式,这些定理在解决复变函数的积分问题中非常关键。 5. **第五章**:可能涵盖留数理论,这是复积分计算的核心,用于求解实变函数的实积分问题,...