phpオブジェクト向けプログラミング学習の高度な特性
4218 ワード
先日、phpのオブジェクト向けの基礎知識についてのブログを書きましたが、この2、3日、phpのオブジェクト向けの高度な特性を見て、記録しておきましょう.後で復習するのに便利です.
オブジェクト向けの最も基本的な定義クラスを除いて、最も主要なのはいくつかの高度な特性に向いているためで、これらの高度な特性を運用して、私达はもっと合理的で優雅なコードを書くことができます(ps:上述の公式言語はすべてネット上で抜粋して、オブジェクト向けのプログラミングの経験があまりないため、自分はただ自分の学習の心得を記録します).雑談が終わったら、次に相手に向かって話します.
(1)静的メソッドと属性:
オブジェクト向けベースでは,クラス内の属性へのアクセスはほとんどがまずクラスのインスタンス化を行い,インスタンス化後のオブジェクトを得,オブジェクトを介してアクセスする.実際にはオブジェクト向けでも、オブジェクトのみでクラスのプロパティにアクセスできるだけでなく、クラスを介してプロパティにアクセスできるようになります.このようなプロパティと方法は「静的」であり、staticキーワードで宣言する必要があります.
静的メソッドは、これらのプロパティがオブジェクト(一般的にはオブジェクトで有効)に属し、静的メソッドが静的プロパティにアクセスできるため、このクラスの一般的なプロパティにアクセスできません.インスタンス化されたオブジェクトは静的メソッドにアクセスできますが、静的プロパティにはアクセスできません.したがって、クラスを介して静的要素にアクセスする場合は、:(2つの英語のコロン)を使用してクラス名と属性またはクラス名とメソッドを接続します.
このようなアクセスにより、クラスの静的属性$numを印刷できます.上記の方法は、クラスの外部で静的プロパティと静的メソッドにアクセスする場合の方法です.それなら、クラスの内部で静的プロパティと静的メソッドにどのようにアクセスしますか?phpは、$thisとは異なり、$thisは現在のオブジェクトを表すキーワードselfを与えます.
出力結果はint(1)である.
(2)定数属性:
定数属性は、その名の通り設定後に変更できない量であり、アクセス可能な属性の値を変更する必要がない場合に定数を使用する必要があります.定数はキーワードconstを使用して宣言され、定数はドル記号ではなく、通常は大文字で定数と命名されます.定数として定義できる値は、基本データ型の値のみで、クラスのインスタンス(オブジェクト)のみで定数属性にアクセスできません.定数を参照するときは$記号は必要ありません.アクセスするときは、クラス名::定数の形式でアクセスします.
(3)抽象クラス:
抽象クラス:直接インスタンス化できないクラスであり、いずれのクラスでも、少なくとも1つのメソッドが抽象として宣言されている場合、このクラスは抽象として宣言されなければならず、抽象として定義されたメソッドは呼び出し方式を宣言しただけで、具体的な機能を実現することはできません.抽象クラスを継承する場合、子クラスは親クラスのすべての抽象メソッドを定義する必要があります.これらのメソッドは、アクセス制御において少なくとも親と一致する(またはより緩やかな)
オブジェクト向けの最も基本的な定義クラスを除いて、最も主要なのはいくつかの高度な特性に向いているためで、これらの高度な特性を運用して、私达はもっと合理的で優雅なコードを書くことができます(ps:上述の公式言語はすべてネット上で抜粋して、オブジェクト向けのプログラミングの経験があまりないため、自分はただ自分の学習の心得を記録します).雑談が終わったら、次に相手に向かって話します.
(1)静的メソッドと属性:
オブジェクト向けベースでは,クラス内の属性へのアクセスはほとんどがまずクラスのインスタンス化を行い,インスタンス化後のオブジェクトを得,オブジェクトを介してアクセスする.実際にはオブジェクト向けでも、オブジェクトのみでクラスのプロパティにアクセスできるだけでなく、クラスを介してプロパティにアクセスできるようになります.このようなプロパティと方法は「静的」であり、staticキーワードで宣言する必要があります.
1 class StaticExample{
3 static public $num=0;
5 static public function sayHello(){
7 print "hello world!";
9 }
11 }
静的メソッドは、これらのプロパティがオブジェクト(一般的にはオブジェクトで有効)に属し、静的メソッドが静的プロパティにアクセスできるため、このクラスの一般的なプロパティにアクセスできません.インスタンス化されたオブジェクトは静的メソッドにアクセスできますが、静的プロパティにはアクセスできません.したがって、クラスを介して静的要素にアクセスする場合は、:(2つの英語のコロン)を使用してクラス名と属性またはクラス名とメソッドを接続します.
1 print StaticExample::$num;
2 StaticExample::sayHello();
このようなアクセスにより、クラスの静的属性$numを印刷できます.上記の方法は、クラスの外部で静的プロパティと静的メソッドにアクセスする場合の方法です.それなら、クラスの内部で静的プロパティと静的メソッドにどのようにアクセスしますか?phpは、$thisとは異なり、$thisは現在のオブジェクトを表すキーワードselfを与えます.
1 <?php
2 class StaticExample{
3 static public $num=0;
4 static public function say(){
5 self::$num++;
6 var_dump(self::$num);
7 }
8 }
9 $staticExam=new StaticExample();
10 $staticExam->say();
11 ?>
出力結果はint(1)である.
(2)定数属性:
定数属性は、その名の通り設定後に変更できない量であり、アクセス可能な属性の値を変更する必要がない場合に定数を使用する必要があります.定数はキーワードconstを使用して宣言され、定数はドル記号ではなく、通常は大文字で定数と命名されます.定数として定義できる値は、基本データ型の値のみで、クラスのインスタンス(オブジェクト)のみで定数属性にアクセスできません.定数を参照するときは$記号は必要ありません.アクセスするときは、クラス名::定数の形式でアクセスします.
(3)抽象クラス:
抽象クラス:直接インスタンス化できないクラスであり、いずれのクラスでも、少なくとも1つのメソッドが抽象として宣言されている場合、このクラスは抽象として宣言されなければならず、抽象として定義されたメソッドは呼び出し方式を宣言しただけで、具体的な機能を実現することはできません.抽象クラスを継承する場合、子クラスは親クラスのすべての抽象メソッドを定義する必要があります.これらのメソッドは、アクセス制御において少なくとも親と一致する(またはより緩やかな)