国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

??
PHP 面向?qū)ο蠡A(chǔ)(接口,類),php面向
? ??? ?? PHP ???? PHP 面向?qū)ο蠡A(chǔ)(接口,類),php面向_PHP教程

PHP 面向?qū)ο蠡A(chǔ)(接口,類),php面向_PHP教程

Jul 12, 2016 am 08:52 AM
?? ??

PHP 面向?qū)ο蠡A(chǔ)(接口,類),php面向

介紹PHP面向?qū)ο蟮幕A(chǔ)知識

1. 接口的定義interface ,類定義class,類支持abstract和final修飾符,abstract修飾為抽象類,抽象類

不支持直接實例化,final修飾的類/方法不能被繼承/方法重寫.
2. 接口的實現(xiàn)通過implements,類繼承extends

  <span>interface</span><span> IShape{
    </span><span>function</span><span> draw_core();
  };

  </span><span>class</span> PathShape <span>implements</span><span> IShape{
    </span><span>public</span> <span>function</span><span> draw_core(){}
  }

  </span><span>class</span> Rectangle <span>extends</span><span> PathShape{
    </span><span>public</span> <span>function</span><span> draw_core(){
      </span><span>//</span><span>overide draw_core</span>
<span>    }
  }</span>

3.靜態(tài)變量和常量(static ,const )
a.常量聲明變量名前面不需要加美元修飾符$,靜態(tài)變量需要
b.兩者都通過類訪問,靜態(tài)變量方法時候需要在變量名前加$美元修飾符好

   <span>class</span><span> MyClass{
     </span><span>const</span><span> M_CONST_VALUE;
     </span><span>static</span> <span>$M_STATIC_VALUE</span><span>;
   }

   MyClass</span>::<span>M_CONST_VALUE ;
   MyClass</span>::<span>$M_STATIC_VALUE</span>;

c.常量聲明時候不支持訪問權(quán)限修飾符,不能在const前加public,常量默認就是public。

   <span>const</span> M_CONST  ; <span>//</span><span>OK</span>
   <span>public</span> <span>const</span> M_CONST ; <span>//</span><span> throw exception</span>

4.類內(nèi)部訪問非靜態(tài)/常量變量和方法通過$this,訪問父類通過parent,在類內(nèi)部訪問靜態(tài)變量和方法可以通過
self,self本質(zhì)是指向該類也可以通過static訪問

   parent::method(); <span>//</span><span>父類方法</span>
   <span>$this</span>->method() ; <span>//</span><span>方法實例方法</span>
   self::<span>$static_value</span> ;<span>//</span><span>訪問靜態(tài)變量</span>
   <span>static</span>::<span>$static_value</span>;<span>//</span><span>同上</span>


5.static和self的區(qū)別在于self指的是解析上下文,也是是作用與當前類,static指的是被調(diào)用
的類而不是包含類,典型的例子就是單例

 <span>abstract</span> <span>class</span><span> ParentClass{
   </span><span>public</span> <span>static</span> <span>function</span><span> createInstance(){
     </span><span>return</span> <span>new</span> <span>static</span><span>(); 
     </span><span>//</span><span>這里不能使用self,因為self本意其實指向parentclass的
     //如果你使用了self,那么將拋出異常,提示抽象類無法實例化
     //而static并不直接指向parentclass而是作用與包含類
     //</span>
<span>   }
 }

 </span><span>class</span> ChildClass <span>extends</span><span> ParentClass{
   </span><span>//
</span> }

7.類中使用攔截器,PHP攔截器有__get,__set,__inset,__unset,__call,這里只關(guān)注geth和set攔截器

 __get(<span>$property</span><span>) 當訪問未定義的屬性時候該方法被調(diào)用
 __set(</span><span>$property</span>,<span>$value</span><span>)當給未定義的屬性賦值時被調(diào)用
 </span><span>class</span><span> MyClass{
    </span><span>public</span> <span>function</span> __get(<span>$property</span><span>){
       </span><span>echo</span> "Access __get"<span>;
       </span><span>if</span>(property_exists(<span>$this</span>,<span>$property</span><span>)){
          </span><span>return</span> <span>$this</span>-><span>$property</span><span>;
       }</span><span>else</span><span>{
         </span><span>return</span> "unknown"<span>;
       }
    }

    </span><span>public</span> <span>function</span> __set(<span>$property</span>,<span>$value</span><span>){
      </span><span>if</span>(!property_exists(<span>$this</span>,<span>$property</span><span>)){
       </span><span>$this</span>->Name = <span>$value</span>; <span>//</span><span>變量不存在就直接給$Name賦值</span>
<span>      }
    }
    
    </span><span>public</span> <span>$Name</span> = "visonme"<span>;
 };
 </span><span>//</span><span>訪問</span>
 <span>$obj</span>  = <span>new</span><span> MyClass();
 </span><span>$obj</span>->Name ; <span>//</span><span>直接訪問變量$Name</span>
 <span>$obj</span>->Password;<span>//</span><span>Password未定義,先訪問__get最后輸出unknown

 //-for __set</span>
 <span>$obj</span>->password = 'fz-visonme';<span>//</span><span>password不存在,那么將走__setz最后給$Name賦值</span>
 <span>echo</span> <span>$obj</span>->Name ; <span>//</span><span> output: fz-visonme</span>

8.類構(gòu)造函數(shù)和析構(gòu)函數(shù):__construct, __destruct ,構(gòu)造函數(shù)實例化對象時候調(diào)用,多用于成員變量初始化工作,析構(gòu)在類銷毀時候調(diào)用,多用于收尾工作

<span>class</span><span> MyClass{
  </span><span>function</span><span> __construct(){}
  </span><span>function</span><span> __destruct(){}
}</span>

9.對象的復制通過clone,clone關(guān)鍵字使用“值復制"方式來產(chǎn)生一個新的對象,對于對象復制本身還是走引用復制的。

a.簡單類型賦值

<span>class</span><span> MyClass{
  </span><span>public</span> <span>$ID</span><span>;
};

</span><span>$a</span> = <span>new</span><span> MyClass;
</span><span>$a</span>->ID = 199<span>;
</span><span>$b</span> = <span>clone</span> <span>$a</span><span>;  
</span><span>echo</span> <span>$b</span>->ID;   <span>//</span><span> output: 199</span>

b.包含對象的復制

<span>class</span><span> Account{
  </span><span>public</span> <span>$RMB</span><span>;
};
</span><span>class</span><span> MyClass{
  </span><span>public</span> <span>$ID</span><span>;
  </span><span>public</span> <span>$AccountObj</span><span>;

  </span><span>public</span> <span>function</span> __construct(<span>$c</span><span>){
    </span><span>$this</span>->AccountObj = <span>$c</span><span>;
  }
};

</span><span>$a</span> = <span>new</span> MyClass(<span>new</span><span> Account());
</span><span>$a</span>->AccountObj->RMB= 199<span>;
</span><span>$b</span> = <span>clone</span> <span>$a</span><span>;
</span><span>echo</span> <span>$b</span>->AccountObj->RMB;   <span>//</span><span>output: 199</span>
<span>$a</span>->AccountObj->RMB = 100<span>;
</span><span>echo</span> <span>$b</span>->AccountObj->RMB;  <span>//</span><span>output: 100</span>
<span>
在clone后,</span><span>$a的AccountObj改變時候</span>,同時會影響到<span>$b</span>

這種結(jié)果顯然不是我們所期望的,我們所期望的是ab是兩個不存在任何關(guān)聯(lián)的獨立對象.

為了解決這個問題我么可以在類內(nèi)部實現(xiàn)__clone,當我們在外面調(diào)用clone時候其內(nèi)部會調(diào)用類的__clonef方法,所以我們可以通過重寫__clone來達到對clone的控制.例如針對b例子的改造

<span>class</span><span> MyClass{
  </span><span>public</span> <span>$ID</span><span>;
  </span><span>public</span> <span>$AccountObj</span><span>;

  </span><span>public</span> <span>function</span> __construct(<span>$c</span><span>){
    </span><span>$this</span>->AccountObj = <span>$c</span><span>;
  }

  </span><span>//</span><span>__clone實現(xiàn)clone的控制
  //這里內(nèi)部同時對Account實現(xiàn)一次clone,這里就可以避免b例子中出現(xiàn)的問題</span>
  <span>public</span> <span>function</span><span> __clone(){
    </span><span>$this</span>->ID = 0 ; <span>//</span><span>將ID置為0,如果你需要的話</span>
    <span>$this</span>->AccountObj = <span>clone</span> <span>$this</span>-><span>AccountObj;
  }
};</span>

關(guān)于__clone方法我們需要知道,該方法是在被clone后的對象上調(diào)用,而不是在原始的對象上面運行的,例如上b例子中

? $b = clone $a ; //執(zhí)行的過程: 基本復制對象$a ---> $b執(zhí)行__clone()?

?


?

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1126840.htmlTechArticlePHP 面向?qū)ο蠡A(chǔ)(接口,類),php面向 介紹PHP面向?qū)ο蟮幕A(chǔ)知識 1. 接口的定義interface ,類定義class,類支持abstract和final修飾符,abstract修飾...
? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
Java? ??? ??? ????? ? ?? ??? ?? Java? ??? ??? ????? ? ?? ??? ?? May 01, 2024 pm 06:33 PM

?????? ?? ???? ?? ? ???? ?? ??? ??? ?????. ?????? ??? ????? ???? ?? ???? ?? ??? ???? ?? ???? ???? ?? ???? ???? ???. ?? ????? ?????? ???? ????? ???? ?? ??? ?? ?? ???? ?? ??? ????? ????? ???? ??? ? ????. ??? ???? ?????? ??? ??? ???? ? ???? ?? ?? ???? ???? ??? ???? ???? ? ?????. ??? ???? ?????? ?? ???? ???? ? ?????. ?? ??? ?? ???? ???? ???? ?????? ???? ?? ??? ?? ??? ? ????.

golang?? ?? ???? ???? golang?? ?? ???? ???? Jan 06, 2023 pm 07:04 PM

Golang?? ?? ???? ????. Golang? ????(OOP) ??? ??? ???, ??, ?? ???? ??? ????. ??? golang?? ??(???)? ?????(?????)? ???, ?? ??? ?? ??? ?? ????? ??? ? ????. ?? ??? ?? ???.

PHP?? ?????? ?? ???? ???? ?????? PHP?? ?????? ?? ???? ???? ?????? Jun 04, 2024 am 09:17 AM

?????? ?? ???? ?? ??? PHP ??? ???? ? ???? ??? ?? ?? ???? ????. ?????? ??? ?? ???? ?? ?? ???? ??? ?? ?????. ??????? ???? ???? ??? ? ??? ?? ????? ??? ? ????. ???? ?? ?????? ??? ? ??? ??? ?? ?????? ??? ? ????. ?????? ?????? ? ??? ?? ???? ?????? ? ????.

PHP? ?? ???? ?????? ???? ?????? PHP? ?? ???? ?????? ???? ?????? Apr 08, 2025 am 12:08 AM

?? ???? ?????? ?? ???? ?? ???? ???? ??? ?? ? ? ?? ?????? ???? ?? ? ?? ? ? ??? ????. 1. Abstract ???? ?? ? ???? ??? ?? ? ??? ?? ???? ???? ????, ?? ?? ? ?? ??? ???? ? ?????. 2. ?????? ????? ???? ???? ????, ???? ??? ?? ? ???? ??? ?? ?? ? ?? ??? ???? ? ?????.

Golang ?? ?????? ?? ??? ?? ???? ???? ?? ???? ?? Golang ?? ?????? ?? ??? ?? ???? ???? ?? ???? ?? Apr 20, 2024 am 09:21 AM

??? ?????? ?? ???? ?? ?? ???? ?? ????? ?? ??? ?? ??? ?????, ??? ?? ?? ??? ? ?? ?? ???? ?????. ??? ?????? ?????? ? ??? ?? ???? ?????? ? ????. ??? ?????? ??? ?? ???? ???? ??? ?? ???? ?? ???? ??? ? ????.

Java?? ????? ? ?? ???? ?? ??? ?? Java?? ????? ? ?? ???? ?? ??? ?? Apr 30, 2024 pm 02:03 PM

Java? ???? ????? ? ?? ??? ??? ?? ???? ??? ? ???? ?? ??? ? ???? ?? ???? ?????. ?????? ?? ???? ?? ??? ??? ? ??, ?? ???? ?? ???? ?? ??? ??? ? ???, ?????? ???? ??? ?????.

Java ????? ? ?? ???: ????? ???? ?? ? Java ????? ? ?? ???: ????? ???? ?? ? Mar 04, 2024 am 09:13 AM

?????: ??? ?? ?? ?????? Java?? ??? ??? ??? ????? ???? ??? ????? ????. ?? ?????? ???? ???? ??? ???? ????? ???? ?? ??? ???. ?????? ???? ?? ????? ??? ??? ????. ?? ?: publicinterfaceAnimal{voideat();voidsleep();} ?? ???: ????? ??? ????? ?? ???? ?? ????? ??? ? ?? ?? ??? ???? ?? ??????. ?????? ?? ?? ????? ???? ??? ?? ???? ??? ? ????. ?? ???? abstract ???? ???? ?????? ?? ?????? ???. ?? ?: publicabstractcla

Java ?????? ?? ???: ? ??? ?? ?? ?? Java ?????? ?? ???: ? ??? ?? ?? ?? Mar 04, 2024 am 09:34 AM

????? ?????? Java? ?? ???? ??? ?????. ?????? ???? ???? ??? ?????? ???? ????? ?????. ?????? ?? ???? ??? ??? ??? ????? ???? ??? ?????. ?????? ?????. publicinterfaceExampleInterface{voiddoSomething();intgetSomething();} ?? ??? ?? ???? ?????? ? ?? ??????. ???? ?? ???? ??? ???? ???? ????. ?????? ????? ?? ???? ?? ???? ?? ???? ?? ?????. ??? ?? ????? ?? ??? ???? ???? ???? ??? ?? ????. ?? ??? ??: publicabstractcl

See all articles