首頁  >  文章  >  後端開發  >  34 PHP 類

34 PHP 類

WBOY
WBOY原創
2016-07-30 13:29:291158瀏覽

1. 定義

<code>class 类名
{
    <span>...</span>
}</code>

2. 載入類別

<code><span>require</span><span>'./People.class.php'</span>;</code>

3. 自動載入類別
為了使用類,每次都要包含類的定義挺麻煩的。 PHP5 開始,定義了一個 __autoload() 函數來實作類別的自動載入。 PHP在使用未定義的類別時,會自動呼叫此函數。

<code><span><span>function</span><span>__autoload</span><span>(<span>$classname</span>)</span>
{</span><span>require_once</span><span>'./'</span> . <span>$classname</span> . <span>'.php'</span>;
}</code>

4. 類別的方法

<code>[ <span>static</span> | <span>final</span> ] 访问控制修饰符 <span><span>function</span> 方法名<span>(参数)</span>
{</span>
    ...
}
关键字 <span>static</span><span>final</span> 为可选项,
访问控制修饰符为<span>public</span>,<span>protected</span>,<span>private</span>中的一个。如果不指定,默认为<span>public</span>。
<span>static</span>关键字修饰的类方法为静态方法。在静态方法中,只能调用静态变量,不能调用普遍变量。
在普通方法中,可以调用静态变量。
在类的内部调用静态方法:<span>self</span>::静态方法。
在类的内部调用父类的静态方法:<span>parent</span>::静态方法。
如果在外部调用静态方法,则不用实例化,直接调用。
类名::静态方法</code>

5. 類別的屬性

<code>访问控制修饰符 [<span>static</span>] 属性名称;
访问控制修饰符为<span>public</span>,<span>protected</span>,<span>private</span>中的一个。默认为<span>public</span>。

如果要在类的方法中,访问属性:<span>$this</span>->属性名;

在类的内部访问静态属性:<span>self</span>::静态属性。
访问父类的静态属性:<span>parent</span>::静态属性。
注意,这里的静态属性名是要加 $ 美元符号的。
<span>self</span>::<span>$dollars</span> = <span>$dollars</span>;

在类外访问静态属性:  类名::属性名;  前提为可以访问,也是有 $ 符号。</code>

6. 類常數

<code>const <span>MALE</span> = <span>'男'</span>;    <span>//</span>常量名前面不加  <span>$ </span>。

类内访问:  <span>self:</span><span>:</span>常量名
          <span>parent:</span><span>:</span>常量名
不加 <span>$ </span> , <span>self:</span><span>:MALE</span>类外访问:  类名<span>:</span><span>:</span>常量名 ;   不加  <span>$ </span>。</code>

9. 多態


多態分為靜態多態與動態多型

<code><span>function</span> __construct()
{
    <span>...</span>  // 自动调用
}

<span>function</span> __destruct()
{
    <span>...</span>  //  无参
}</code>

子類覆蓋父類:

只要在子類別中定義與父類別同名的方法,即可覆寫。諾要存取父類,用parent::父類別同名方法。 如果父類不想自己的方法被子類別覆蓋,用 final 來修飾父類別的方法。

10. 抽象類別和抽象方法
抽象類別是一種不能被實例化的類,只能作為父類別被其他類別繼承。抽象類別必須包含一個抽象方法。

所謂抽象方法,就是沒有具體實現的方法,其對應的函數體為空。抽象方法的細節,只能在子類別中實現,而且子類別必須實作所繼承抽象類別中的所有的抽象方法。

<code>class 子类名 extends 父类名
{
    <span>...</span>
}

如果子类中定义了构造方法,则子类在实例化时不会自动调用父类的构造方法。对于析构方法也是如此,
如果子类中定义了析构方法,则子类的实例在被销毁时不会自
动调用父类的析构方法。

显式调用父类的构造方法:
<span>function</span> __construct()
{
    <span>...</span>
    parent::__construct()
    {
        <span>...</span>
    }
    <span>...</span>
}

显式调用父类的析构方法:
<span>function</span> __destruct()
{
    <span>...</span>
    parent::__destruct()
    {
        <span>...</span>
    }
    <span>...</span>
}</code>

11. 介面

無論是普遍類別還是抽象類,只能實現單繼承,也就是一個子類別只能繼承一個父類別。事實上,PHP 也只支援單繼承。如果要實現多繼承,則用介面(interface)技術來實作。


介面和類別的區別:

<code>静态多态:一个同名函数或者一个类中的同名方法,根据参数列表(类型以及个数)的不同来区别语义,
即所谓的函数重载。但PHP不支持函数重载。

动态多态:类的成员方法,能根据调用它的对象的类型的不同,自动做出适应性调整,
而且调整是发生在程序运行时的。PHP 中通过抽象类和接口
技术来实现动态多态性。</code>

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了34 PHP 類,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn