PHPシリーズ(1)

黄舟
黄舟オリジナル
2017-02-06 09:50:161766ブラウズ

記事の冒頭に書きました:

春節が近づいており、明日は家に帰ります。忙しい一年を経て、ようやく家族と過ごすことができてとても楽しみです。部外者が北京を去った後、北京はまるで「空の都市」のようだった、今日私の同僚がこのことについて話しているとき、彼らは突然司馬遷の有名な言葉を思い出した。 「今、利益の方向性は、家族の絆、凧の巻き上げに関するものでなければなりません。この1年に何を経験したかに関係なく、気分を整えて家に帰って新年を祝う必要があります。」新年明けましておめでとうございます~

春節期間中、私も自分との約束を果たし、毎週少なくとも1つの記事を公開します。

貴重なご提案をいただいた And1 読者の皆様にも感謝いたします。何か良い提案があれば、ぜひお知らせください。

本文に戻る: 今日は PHP のクラスについて話します。

1 クラスとは

クラスとは、猫、犬、豚など、いくつかのものを 1 つのカテゴリに分類することです。それらはすべて動物なので、1 つのカテゴリに分類できます。クラスは抽象的であり、具象的ではありません。クラスを具象化すると、猫と犬は動物クラスのオブジェクトになります。学生をクラスとみなすこともできます。その場合、Xiaohong は学生クラスのオブジェクトになります (開発用語では「インスタンス」とも呼ばれます)

ざっくり言うと、クラスは多数のメソッドの集合です (実際には属性もあります) 、属性はメソッドの実装と一致するだけです)、これらのメソッドはプログラムで頻繁に使用するロジックまたはアルゴリズムであり、それらをクラスにラップすると、プログラムの効率が向上し、コードの重複を減らすことができます。

2 クラス定義

各クラスの定義は、キーワード class で始まり、その後にクラス名、その後にクラスの属性とメソッドの定義を含む中括弧のペアが続きます。

<?php
class SimpleClass
{
    // 声明类的属性
    public $var = &#39;a default value&#39;;

    // 声明类的方法
    public function displayVar() {
        echo $this->var;
    }
}
?>

クラス定義内でメソッドが呼び出されるとき、利用可能な疑似変数 $this があります。 $this は呼び出し元オブジェクトへの参照です。実際には、このクラス (代名詞) のインスタンスを指します

3 クラス

インスタンスも特定のオブジェクトです。 クラスのインスタンスを作成するには、new キーワードを使用する必要があります。

new の後にクラス名を含む文字列が続く場合、クラスのインスタンスが作成されます。

// 创建一个实例
<?php
$instance = new SimpleClass();

// 也可以这样做:
$className = &#39;Foo&#39;;
$instance = new $className(); // Foo()
?>

4 クラス継承

は、子供が父親の遺伝子を継承すると理解できます。

① クラスは、宣言内で extends キーワードを使用して、別のクラスのメソッドとプロパティを継承できます。

② PHP は多重継承をサポートしていません。クラスは基本クラスを 1 つだけ継承できます (実際、子は父親を 1 つだけ持つことができます)。

③ 継承されたメソッドやプロパティは、同じ名前で再宣言することでオーバーライドできます(息子が父親の元々の遺伝子を改良したことが分かります)。ただし、親クラスがメソッドを定義するときに Final を使用する場合、そのメソッドをオーバーライドすることはできません。オーバーライドされたメソッドまたはプロパティには、parent:: を通じてアクセスできます。

④ メソッドをオーバーライドするときは、パラメーターが一貫している必要があります。そうでない場合、PHP は E_STRICT レベルのエラー メッセージを発行します。例外はコンストラクターで、オーバーライド時に異なるパラメーターを受け取ることができます。

// 简单的类继承
<?php
class ExtendClass extends SimpleClass
{
    // 重新定义父类的方法
    function displayVar()
    {
        echo "继承类\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>

5 クラス名の解析

ClassName::class を使用すると、クラス ClassName の完全修飾名を含む文字列を取得できます。

// 类名的解析
<?php
namespace NS {
    class ClassName {
    }

    echo ClassName::class;
}
?>

// 以上输出结果: NS/ClassName

上記は PHP シリーズ (1) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。