当前位置:编程学习 > php >>

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

本期格言:
 
     当我们天资不够强大时,与其花500%的精力做一个单线程技术高手,不如花较少的精力做一个聪明的多线程程序员。
 
 
本期扯淡:
 
      湖南卫视的“我是歌手”第一季终结,歌王产生。也许很多人心目中的歌王都不一样,但是不可否认的是,羽泉确确实实得到了“官方”宣布和“大家都认可”的歌王,我个人分析原因如下:
 
      其实各个歌手实力都很强,各有特色,真没有歌王不歌王之分。如获得神给予天赋的林志炫、高音黄妈、全身都在摇滚的周晓鸥、细腻无比的杨宗纬以及其他各有特色的歌手。但是我个人认为只有羽泉是最聪明的歌手,论音色也许比不过林志炫、论感人也许比不过杨宗纬、论高音高不过妈、论摇滚得剃光头,所以羽泉采取的策略是把自己融入观众,而不是易做图观众融入他们的歌。最终在制胜局拿出最猛的杀手锏。
 
      这里还要写一个经我加工过的神级分析:给羽泉投票时,喜欢“羽”有一票,喜欢“泉”有一票,喜欢邓超有一票,喜欢孙俪有一票,喜欢白百何有一票,支持3G天翼有一票,家里正在用立白洗衣液的有一票。因此羽泉的得票不第一,实在是天理难容了。何况立白和天翼还是本节目赞助商。
 
       扯淡扯上程序员也一样:当我们猛然出道时发现Java高手前辈实在太多了,赤膊追赶也难以追上,毕竟人家的开发经验放在那;再发现c#,这厮版本和功能升级的也太快了,裸体跟着学也难以全部掌握成为牛人;再看看python或者ruby,学得好的人绝对是大牛而且是少数,学的不好的人基本上就是易做图;因此我们不如学php,因为喜欢淘宝的有一票、喜欢mysql的有一票、喜欢apache的有一票、喜欢wordpress的有一票、喜欢dz论坛的有一票、喜欢centos的有一票,不多说了,羽泉是歌王,我们何不想办法成为程序员之王呢。
 
 
正文:魔力函数
 
      为何叫魔力函数,或有的地方叫做魔幻函数。原因很简单,没有哪个语言能让你这么简单的把它从头到尾、从里到外如此方便和简单的完爆一遍。爆完之后,会让你有种把php 完完全全征服的感觉。这种感觉在java中是很难找到的,c#呢?oh,谈都不用谈吧。
 
(一)、 __construct 构造函数
 
   构造函数的意思代表,它是第一个被爆的函数,不管你想不想爆,反正它会自动爆。
[php]  
class test  
       {  
           function __construct()  
            {  
                  echo '自爆第一次';  
             }  
            function mydo()  
           {  
                  echo '手动爆一次';  
           }  
     }  
   
$newObj = new test();  
$newObj->mydo();  
 
 
   运行结果,是自爆第一次(不管你想不想),然后才会爆第二次。
 
这里有个知识点是:传参数也很简单,你可以__construct($arg1,$arg2);
 
同理也可以用 func_get_args这个函数来得到未知个数的参数。譬如
 
[php] 
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 自动加载
 
     这个函数只有一个地方用得着。就是 自动加载函数文件。
 
[php]  
class 水果  
       {  
           function __construct($用户的选择)  
            {  
                if($用户的选择==1)  
                  $苹果的对象=new 苹果(); //这里会自动加载一个 啃苹果需要的函数.php  
                 else  
                 $榴莲=new 榴莲();     //这里就不会加载 多余的php文件  
            }  
     }  
     class 榴莲  
     {  
        //太臭,但是我爱吃  
     }  
     class 苹果  
     {  
         //不臭,但是我不爱吃  
            function __autoload()  
             {  
                require("啃苹果需要的函数.php");  
             }  
     }  
   
$newObj = new 水果(1);  
 
  上述列子请勿直接拷贝运行,搞成中文是为了更容易看懂。
 
(四)、__call
 
     调用不存在的类的函数的时候得处理方法,__call 失败,就调用父类方法,依此类推。
 
    这个函数个人认为是php最给力的函数。由此可以写出很亮的代码 譬如:
 
[php] 
 class data  
  {  
    function __call($name,$arguments)  
    {  
        //$name代表方法名 $arguments代表参数  
       if($name=="getSqlServer")  
       {  
         //
补充:Web开发 , php ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,