php語法學(xué)習(xí)3(面向?qū)ο螅?/h2>
  1. php是面向?qū)ο箝_發(fā)語言,且php的面向?qū)ο蟮恼Z法上和java及其類似,下面分幾項(xiàng)對其進(jìn)行整理總結(jié)。
  2. 面向?qū)ο蟮娜齻€(gè)特性封裝,繼承,多態(tài)。
  3. php中class的代碼結(jié)構(gòu):
    <?php
     class Site {
      //構(gòu)造函數(shù)
     function __construct( $par1, $par2 ) {
        $this->url = $par1;
        $this->title = $par2;
     }
    
     //析構(gòu)函數(shù)
     function __destruct() {
          print "銷毀 " . $this->name . "\n";
      }
    
     /* 成員變量 */
     var $url;
     var $title;
    
     /* 成員函數(shù) */
     function setUrl($par){
        $this->url = $par;
     }
     function getUrl(){
        echo $this->url . PHP_EOL;
     }
     function setTitle($par){
        $this->title = $par;
     }
     function getTitle(){
        echo $this->title . PHP_EOL;
     }
    }
    
    $runoob = new Site;
    $taobao = new Site;
    $google = new Site;
    
    // 調(diào)用成員函數(shù),設(shè)置標(biāo)題和URL
    $runoob->setTitle( "菜鳥教程" );
    $taobao->setTitle( "淘寶" );
    $google->setTitle( "Google 搜索" );
    
    $runoob->setUrl( 'www.runoob.com' );
    $taobao->setUrl( 'www.taobao.com' );
    $google->setUrl( 'www.google.com' );
    
    // 調(diào)用成員函數(shù),獲取標(biāo)題和URL
    $runoob->getTitle();
    $taobao->getTitle();
    $google->getTitle();
    
    $runoob->getUrl();
    $taobao->getUrl();
    $google->getUrl();
    ?>
    
    • php中類的定義和java及其類似,class 關(guān)鍵字,大括號包括屬性和方法,且類中的屬性和方法只能通過改類的實(shí)例對象訪問,且受制于訪問限制符的控制。
    • 類中的屬性使用關(guān)鍵字var進(jìn)行聲明,屬性的語法符合php變量的語法結(jié)構(gòu)。
    • 在類中和java類似可以通過this指向當(dāng)前的類。PHP_EOL 為換行符,類對象的創(chuàng)建也和java類似,通過new 關(guān)鍵字創(chuàng)建
    • 類對象對類中的屬性和方法的調(diào)用:$類對象 -> 屬性/方法
    • php的類存在構(gòu)造函數(shù)和析構(gòu)函數(shù),構(gòu)造函數(shù)用于創(chuàng)建對象且對對象的屬性賦值,php沒有聲明構(gòu)造方法則會自動(dòng)創(chuàng)建默認(rèn)的無參數(shù)構(gòu)造方法。析構(gòu)方法很多語言也會有是在類銷毀的時(shí)候回調(diào)方法,可以處理一些回收的邏輯。
    • class中可以定義常量:const ss = "xxxxx"
    • php類中的屬性和方法都受權(quán)限控制符控制,權(quán)限包括:public,private,protected三種,不像java,沒有默認(rèn)權(quán)限,其默認(rèn)權(quán)限就是public。
      • public:公共權(quán)限,都可以訪問
      • private:私有權(quán)限,僅當(dāng)前類中可以訪問
        *protected:受保護(hù)的權(quán)限,當(dāng)前類和其子類可以訪問。
      • final:此關(guān)鍵字和java一致,其聲明屬性和方法后續(xù)子類都不可以重寫。
      • var聲明的屬性默認(rèn)public權(quán)限。
      • 和java一致,php的calss也支持static關(guān)鍵字,使用其聲明屬性和方法,不需要實(shí)例類對象調(diào)用,可以通過類名直接調(diào)用屬性和方法。
      • 和java不同的是,php對其權(quán)限檢查不是編譯時(shí)校驗(yàn),是在執(zhí)行的時(shí)候校驗(yàn)。
  4. php中類的繼承:
    • 接口:interface,和java一致,聲明接口聲明方法,不需要實(shí)現(xiàn),具體的實(shí)現(xiàn)由其具體的實(shí)現(xiàn)對象實(shí)現(xiàn)。和java也一致,其聲明的方法權(quán)限都是public的。
    • 抽象類:和java一致,類中聲明的方法可以部分實(shí)現(xiàn),其實(shí)例對象必須實(shí)現(xiàn)其所有未實(shí)現(xiàn)的方法,其實(shí)現(xiàn)方法的權(quán)限和父類相同或者更為寬松,抽象類和抽象方法使用關(guān)鍵字abstract聲明。
    • php中的子類對父類是單繼承,對接口是多實(shí)現(xiàn),繼承使用關(guān)鍵字extends實(shí)現(xiàn),實(shí)現(xiàn)試用關(guān)鍵字implements實(shí)現(xiàn)。
    • 子類對父類的繼承,繼承方法,也可以對父類的方法進(jìn)行重寫。
    • 子類中調(diào)用父類的方法的語法:parent::方法名,即父親::方法名
  5. model類:類中非常實(shí)用和使用比較多的一種類型,通常聲明model對象,類中聲明對象屬性和對象方法,在日常開發(fā)中model類和接口數(shù)據(jù)轉(zhuǎn)換通常用到j(luò)son(接口中json數(shù)據(jù)格式,model和json數(shù)據(jù)通常存在編碼和解碼)。
    • php針對json及其方便,php5.3版本及其以上直接安裝了json擴(kuò)展,提供了json_encode和json_decode兩個(gè)api實(shí)現(xiàn)對象和json數(shù)據(jù)的轉(zhuǎn)換。
      string json_encode ( $value [, $options = 0 ] )
      參數(shù):
         $value: 需要轉(zhuǎn)換為json數(shù)據(jù)的對象。
         options:由以下常量組成的二進(jìn)制掩碼 JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR。要注意的是 JSON_UNESCAPED_UNICODE 選項(xiàng),如果我們不希望中文被編碼,可以添加該選項(xiàng),第二個(gè)參數(shù)可以不指定(不涉及中文的時(shí)候)。
      mixed json_decode ($json_string [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
      參數(shù):
         $json_string: 需要解碼的json數(shù)據(jù)。
         $assoc:當(dāng)該參數(shù)為 TRUE 時(shí),將返回?cái)?shù)組,F(xiàn)ALSE 時(shí)返回對象
         $depth: 整數(shù)類型的參數(shù),它指定遞歸深度
         $options: 二進(jìn)制掩碼,目前只支持 JSON_BIGINT_AS_STRING
         后面兩個(gè)參數(shù)可以默認(rèn),只輸入前面兩個(gè)參數(shù)即可。
      
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容