Heim  >  Artikel  >  Backend-Entwicklung  >  34 PHP-Klassen

34 PHP-Klassen

WBOY
WBOYOriginal
2016-07-30 13:29:291197Durchsuche

1. Definition

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

2. Klasse laden

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

Klasse automatisch laden
Um eine Klasse zu verwenden, ist es mühsam, jedes Mal die Klassendefinition einzuschließen. Ab PHP5 ist eine __autoload()-Funktion definiert, um das automatische Laden von Klassen zu implementieren. PHP ruft diese Funktion automatisch auf, wenn eine undefinierte Klasse verwendet wird.

<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. Klassenmethoden

<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. Klassenattribute

<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>

7. Konstruktoren und Destruktoren

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

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

8. Klassenvererbung

<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>

9 . Polymorphismus

Polymorphismus ist in statischen Polymorphismus und dynamischen Polymorphismus unterteilt

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

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

Unterklasse überschreibt die übergeordnete Klasse: Solange in der Unterklasse eine Methode mit demselben Namen wie die übergeordnete Klasse definiert ist, kann sie überschrieben werden. Um auf die übergeordnete Klasse zuzugreifen, verwenden Sie die Methode parent::mit demselben Namen wie die übergeordnete Klasse.

Wenn die übergeordnete Klasse nicht möchte, dass ihre Methoden von der Unterklasse überschrieben werden, verwenden Sie final, um die Methoden der übergeordneten Klasse zu ändern.


10. Abstrakte Klassen und abstrakte Methoden

Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann und nur von anderen Klassen als übergeordnete Klasse geerbt werden kann. Eine abstrakte Klasse muss eine abstrakte Methode enthalten.

Die sogenannte abstrakte Methode ist eine Methode ohne spezifische Implementierung und der entsprechende Funktionskörper ist leer. Die Details abstrakter Methoden können nur in Unterklassen implementiert werden, und Unterklassen müssen alle abstrakten Methoden in der abstrakten Klasse implementieren, die sie erben.

<code>abstract  class 抽象类名
{
    <span>...</span>
    abstract [public | protected ] <span>function</span> 抽象方法名(参数)
    {
        <span>...</span>
    }
}
其中,抽象方法的访问控制符只能为public,protected之一。如果抽象方法声明为public,则
子类中实现的方法也应声明为public;如果抽象方法声明为protected,
则子类中实现的方法既可以为protected,也可以声明为public。</code>

11. Schnittstelle

Ob es sich um eine universelle Klasse oder eine abstrakte Klasse handelt, sie kann nur eine einzelne Vererbung implementieren, dh eine Unterklasse kann nur eine übergeordnete Klasse erben . Tatsächlich unterstützt PHP nur die Einzelvererbung. Wenn Sie Mehrfachvererbung implementieren möchten, verwenden Sie dazu Schnittstellentechnologie.

Der Unterschied zwischen Schnittstellen und Klassen:

<code>可以认为接口也是一种类,只是这种类中可以定义常量,但不能定义属性变量;可以定义方法,
但方法必须为空。也就是说,接口中只能定义常量和尚
未实现的方法,且方法必须为<span>public</span>(可以省略,
因为类的方法默认就是<span>public</span>)。

<span><span>interface</span> 接口名
{</span><span>const</span> 常量名 = 值;
    <span><span>function</span> 方法名<span>(参数)</span>
    {</span>
        ...
    }
}

实现:

<span><span>class</span> 子类名 <span>implements</span> 接口名1,接口名2 ..
{</span>
    ...
}</code>
Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und möglicherweise nicht Vervielfältigung ohne Genehmigung des Bloggers.

Das Obige hat die 34 PHP-Klassen vorgestellt, einschließlich verwandter Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn