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>
7. クラスの継承
<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::methodを使用します。
親クラスのメソッドがサブクラスによってオーバーライドされることを望まない場合は、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. インターフェース
ユニバーサルクラスであっても抽象クラスであっても、単一の継承のみを実装できます。つまり、サブクラスは 1 つの親クラスのみを継承できます。実際、PHP は単一継承のみをサポートします。多重継承を実装したい場合は、インターフェース技術を使用して実現します。
<code>静态多态:一个同名函数或者一个类中的同名方法,根据参数列表(类型以及个数)的不同来区别语义, 即所谓的函数重载。但PHP不支持函数重载。 动态多态:类的成员方法,能根据调用它的对象的类型的不同,自动做出适应性调整, 而且调整是发生在程序运行时的。PHP 中通过抽象类和接口 技术来实现动态多态性。</code>
著作権表示: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。
上記では、関連コンテンツも含めて 34 の PHP クラスを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。