基礎知識
クラス: 同じ属性またはメソッドを持つクラスのコレクション。たとえば、シボレー車はシボレー車カテゴリ、メルセデスベンツ車はメルセデスベンツ車カテゴリ、BMW車はBMW車カテゴリであり、これら 3 つのカテゴリはメインの車カテゴリのサブカテゴリです。
オブジェクト: クラスの特定の実装。たとえば、BMW Q5 は、BMW 車クラスの特定の実装です。オブジェクトはメモリに保存されます。メモリ内のオブジェクトの割り当てを見てみましょう。
<?php /** *新建一个类 */ class newClass{ public $a; public $b; public function funA(){ echo "I am function A"; } public function funB(){ echo "I am function B"; } } /** *使用类创建对象 */ $opt=new newClass(); $opt->a="opt";//将opt对象中的a属性赋值为opt $opt->funA();//打印出"I am function A"?>
修飾子: クラスでクラスと属性を定義するとき、次の 3 つの修飾子を使用できます。追加しない場合、デフォルトは public
public です。最大権限
protected: 権限の範囲はそれ自体とそのサブクラス内にあります
private: 権限の範囲はそれ自体内にのみあります
コンストラクタとデストラクタ: クラスをインスタンス化してオブジェクトを作成するとき、多くの場合、オブジェクトを初期化する必要があります。このとき、クラス内にコンストラクタ メソッドを定義する必要があります。オブジェクトの使用が完了したら、メモリ使用量を減らすためにオブジェクトを解放する必要がありますが、このとき、デストラクター メソッドを使用する必要があります。
php では、__construct() メソッドと __destruct() を使用します。次のコードは、
<?php class newClass{ public $a; public $b; public function __construct($a,$b){ $this->a=$a; $this->b=$b; echo "我是构造函数"; } public function __destruct(){ echo "我是析构函数"; } } ?>
Encapsulation
開発時に使用します。重要なプログラム モジュールのデータには、他の人が簡単にアクセスできないようにすることが多いため、これらのデータはカプセル化する必要があります。現時点では、private キーワード。次のように:
<?php class privateClass { private $a; private $b; private function privateFun() { echo "我是封装的方法"; } } ?>
__set() と __get() の使用
__set() メソッドを通じて、オブジェクトを通じてメンバー属性値を直接設定できます。
__get() メソッドを通じて、オブジェクトを通じてメンバー属性値を取得
<?php class setClass { private $a; private $b="ww"; public function __set($oldValue,$newvalue){ $this->$oldValue=$newvalue; } public function __get($newvalue){ return $newvalue; } } $opt= new setClass(); $opt->a="sss";//直接设置私有属性值 echo $opt->b;//直接读取私有属性值 ?>
__isset() を通じてオブジェクト内のプライベート属性が存在するかどうかを直接確認する
プライベート属性を直接削除する__unset() を介してオブジェクト内の属性を取得します。
<?php class issetClass { private $a; private $b = 'www'; function __isset($privateName) { if (isset($privateName)) { return 1; } else { return 0; } } function __unset($privateName) { echo "销毁" . $privateName; } } $opt = new issetClass(); echo isset($opt->$b); var_dump(unset($opt->$b));?>
継承
複数のクラスを作成する場合、多くの場合、複数のクラスが同じプロパティとメソッドを持ちます。コードを簡素化するために、継承を導入します。サブクラスの概念により、親クラスの一部の属性とメソッドを継承できるため、冗長なコード記述が削減されます。 継承クラスの書き方キーワード extends を使用してサブクラスを作成します
<?php class parentClass{ } class childClass extends parentClass{ } ?>
親クラスのメソッドをオーバーライドする親クラスのメソッドがサブクラスの使用を満足できない場合、親クラスのメソッドをオーバーライドできます。ただし、親クラスのメソッドをサブクラスで使用したい場合は、親:: メソッド名という構文を使用できます。いくつかの重要なキーワード
final で変更されたクラスは継承できません。また、final で変更されたメソッドはサブクラスでオーバーライドできません。
static で変更されたメンバーとメソッドは、次の構文を使用してクラスを通じて直接使用できます: クラス名::\$プロパティ名またはメソッド名();
クラスで使用する場合は、次の構文を使用します: self::\$ 属性名またはメソッド名
たとえば、const TT=90 の場合、定数を使用する場合は、次の構文を直接使用します self::constant name
次のように
<?php trait testA { function a() { } } trait testB { function b() { } } class testC { use testA, testB; function c() { } } ?>
抽象技術
抽象キーワードで変更されたメソッドおよびクラスは、抽象メソッドまたは抽象クラスと呼ばれます。 。抽象クラスと抽象メソッドの宣言
<?php abstract class testClass { $a; $b; abstract function testFun(); abstract function testFun1(); public function optFun() { echo "抽象类中的抽象方法"; }//抽象类可以有非抽象方法 } class childClass extends testClass { function testFun() { echo "子类中实现抽象方法"; } function testFun1() { echo "子类实现抽象方法"; } } abstract child1Class extends testClass { }//子类是抽象方法可以不实现父类的抽象方法?>
インターフェース技術
インターフェースは特殊な抽象クラスです。インターフェース内で宣言できるのは抽象クラスと定数のみです。インターフェースの宣言使用インターフェース、implements を使用してインターフェースを実装、修飾子はデフォルトの public のみにできます。
サブクラスは複数のインターフェースを継承し、同時に親クラスを継承できます
<?php interface newInterface { const V = 12; abstract function fun1(); abstract function fun2(); } interface newInterface1 { abstract function fun3(); abstract function fun4(); } class parentClass { function fun5() { echo "fun5"; } } class optClass extends parentClass implements newInterface, newINterface1 { function fun1() { echo "fun1"; } function fun2() { echo "fun2"; } function fun3() { echo "fun3"; } function fun4() { echo "fun4"; } } ?>
ポリモーフィズム
PHP でのポリモーフィック実装では、クラスが複数のサブクラスを介して継承される必要があります。クラス メソッドが複数のサブクラスで書き換えられ、異なる関数が実装される場合、それをポリモーフィズムと呼びます。
推奨チュートリアル: 「PHP チュートリアル #」
以上がPHPオブジェクト指向の簡単なまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。