찾다
백엔드 개발PHP 튜토리얼[开心学php100天]第四天:完爆php魔力函数_PHP教程

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

Jul 14, 2016 am 10:09 AM
php기능하늘열려 있는강한우리를시간마법

本期格言:

 
     当我们天资不够强大时,与其花500%的精力做一个单线程技术高手,不如花较少的精力做一个聪明的多线程程序员。
 
 
本期扯淡:
 
      湖南卫视的“我是歌手”第一季终结,歌王产生。也许很多人心目中的歌王都不一样,但是不可否认的是,羽泉确确实实得到了“官方”宣布和“大家都认可”的歌王,我个人分析原因如下:
 
      其实各个歌手实力都很强,各有特色,真没有歌王不歌王之分。如获得神给予天赋的林志炫、高音黄妈、全身都在摇滚的周晓鸥、细腻无比的杨宗纬以及其他各有特色的歌手。但是我个人认为只有羽泉是最聪明的歌手,论音色也许比不过林志炫、论感人也许比不过杨宗纬、论高音高不过妈、论摇滚得剃光头,所以羽泉采取的策略是把自己融入观众,而不是强迫观众融入他们的歌。最终在制胜局拿出最猛的杀手锏。
 
      这里还要写一个经我加工过的神级分析:给羽泉投票时,喜欢“羽”有一票,喜欢“泉”有一票,喜欢邓超有一票,喜欢孙俪有一票,喜欢白百何有一票,支持3G天翼有一票,家里正在用立白洗衣液的有一票。因此羽泉的得票不第一,实在是天理难容了。何况立白和天翼还是本节目赞助商。
 
       扯淡扯上程序员也一样:当我们猛然出道时发现Java高手前辈实在太多了,赤膊追赶也难以追上,毕竟人家的开发经验放在那;再发现c#,这厮版本和功能升级的也太快了,裸体跟着学也难以全部掌握成为牛人;再看看python或者ruby,学得好的人绝对是大牛而且是少数,学的不好的人基本上就是shit;因此我们不如学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)
                  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")  
       {  
         // 执行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时,会自动调用
 
[php]  
class data  
  {  
   
    function __get($name) //$name 代表属性名  
     {  
        if($name=="H7N9")  //变量为H7N9没有定义它,则调用__get,定义了,则不会进入  
          return "禽流感";  
        else  
          return "不要扯淡";  
     }  
   
  }  
   
$newObj = new data();  
echo $newObj->H7N9;  
echo $newObj->H100N30;  
 
用这个办法,依然可以写出很亮的代码
 
(六)、__clone()
 
    当对象被克隆时,执行的函数
 
[php]  
class data  
  {  
      var $myname="shenyisyn";  
     function __clone()  
     {  
        $this->myname="假的shenyisyn";  
     }  
  }  
$newObj = new data();  
echo $newObj->myname;  
$obj2=clone $newObj;  
echo $obj2->myname;  
 
         这个函数实际项目中也有,譬如做新闻网站,某个新闻的类叫做news, 用户可能会复制一条同样的新闻进行采集,此时我们可以在__clone()函数中,对某些标识值进行处理。如
 
[php] 
class news  
  {  
      var $newsid=1;  
     function __clone()  
     {  
      //在数据库中执行 ID为1的新闻,让其被引用或者采集字段加+1  
     }  
  }  
$newObj = new news();  
$news2=clone $newObj;//终于有外站用户来采集我站新闻了,我好欢喜  
 
 
 
(七)、__toString()
 
      用法看例子直接明了
 
[php]  
class news  
  {  
     var $newstitle="美国国务卿克里抵京访华";  
     function __toString()  //不加这个函数,则会出现 对象无法按字符串输出  
     {  
        return "这是一个新闻对象,我只能给你一个标题";  
     }  
  }  
$newObj = new news();  
echo $newObj; //额。。手误了,忘记这货不是一个字符串,不过照样可以爆出来  
 
 
(八)、__sleep 、__wakeup
 
    这个函数只在类被序列化或者反序列化时自动调用。看
 
[php]  
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.bkjia.comtruehttp://www.bkjia.com/PHPjc/477562.htmlTechArticle本期格言: 当我们天资不够强大时,与其花500%的精力做一个单线程技术高手,不如花较少的精力做一个聪明的多线程程序员。 本期扯淡:...
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
과대 광고 : 오늘 PHP의 역할을 평가합니다과대 광고 : 오늘 PHP의 역할을 평가합니다Apr 12, 2025 am 12:17 AM

PHP는 현대적인 프로그래밍, 특히 웹 개발 분야에서 강력하고 널리 사용되는 도구로 남아 있습니다. 1) PHP는 사용하기 쉽고 데이터베이스와 완벽하게 통합되며 많은 개발자에게 가장 먼저 선택됩니다. 2) 동적 컨텐츠 생성 및 객체 지향 프로그래밍을 지원하여 웹 사이트를 신속하게 작성하고 유지 관리하는 데 적합합니다. 3) 데이터베이스 쿼리를 캐싱하고 최적화함으로써 PHP의 성능을 향상시킬 수 있으며, 광범위한 커뮤니티와 풍부한 생태계는 오늘날의 기술 스택에 여전히 중요합니다.

PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?PHP의 약한 참고 자료는 무엇이며 언제 유용합니까?Apr 12, 2025 am 12:13 AM

PHP에서는 약한 참조가 약한 회의 클래스를 통해 구현되며 쓰레기 수집가가 물체를 되 찾는 것을 방해하지 않습니다. 약한 참조는 캐싱 시스템 및 이벤트 리스너와 같은 시나리오에 적합합니다. 물체의 생존을 보장 할 수 없으며 쓰레기 수집이 지연 될 수 있음에 주목해야합니다.

PHP의 __invoke 마법 방법을 설명하십시오.PHP의 __invoke 마법 방법을 설명하십시오.Apr 12, 2025 am 12:07 AM

\ _ \ _ 호출 메소드를 사용하면 객체를 함수처럼 호출 할 수 있습니다. 1. 객체를 호출 할 수 있도록 메소드를 호출하는 \ _ \ _ 정의하십시오. 2. $ obj (...) 구문을 사용할 때 PHP는 \ _ \ _ invoke 메소드를 실행합니다. 3. 로깅 및 계산기, 코드 유연성 및 가독성 향상과 같은 시나리오에 적합합니다.

동시성에 대해 PHP 8.1의 섬유를 설명하십시오.동시성에 대해 PHP 8.1의 섬유를 설명하십시오.Apr 12, 2025 am 12:05 AM

섬유는 PHP8.1에 도입되어 동시 처리 기능을 향상시켰다. 1) 섬유는 코 루틴과 유사한 가벼운 동시성 모델입니다. 2) 개발자는 작업의 실행 흐름을 수동으로 제어 할 수 있으며 I/O 집약적 작업을 처리하는 데 적합합니다. 3) 섬유를 사용하면보다 효율적이고 반응이 좋은 코드를 작성할 수 있습니다.

PHP 커뮤니티 : 자원, 지원 및 개발PHP 커뮤니티 : 자원, 지원 및 개발Apr 12, 2025 am 12:04 AM

PHP 커뮤니티는 개발자 성장을 돕기 위해 풍부한 자원과 지원을 제공합니다. 1) 자료에는 공식 문서, 튜토리얼, 블로그 및 Laravel 및 Symfony와 같은 오픈 소스 프로젝트가 포함됩니다. 2) 지원은 StackoverFlow, Reddit 및 Slack 채널을 통해 얻을 수 있습니다. 3) RFC에 따라 개발 동향을 배울 수 있습니다. 4) 적극적인 참여, 코드에 대한 기여 및 학습 공유를 통해 커뮤니티에 통합 될 수 있습니다.

PHP vs. Python : 차이점 이해PHP vs. Python : 차이점 이해Apr 11, 2025 am 12:15 AM

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP : 죽어 가거나 단순히 적응하고 있습니까?PHP : 죽어 가거나 단순히 적응하고 있습니까?Apr 11, 2025 am 12:13 AM

PHP는 죽지 않고 끊임없이 적응하고 진화합니다. 1) PHP는 1994 년부터 새로운 기술 트렌드에 적응하기 위해 여러 버전 반복을 겪었습니다. 2) 현재 전자 상거래, 컨텐츠 관리 시스템 및 기타 분야에서 널리 사용됩니다. 3) PHP8은 성능과 현대화를 개선하기 위해 JIT 컴파일러 및 기타 기능을 소개합니다. 4) Opcache를 사용하고 PSR-12 표준을 따라 성능 및 코드 품질을 최적화하십시오.

PHP의 미래 : 적응 및 혁신PHP의 미래 : 적응 및 혁신Apr 11, 2025 am 12:01 AM

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기