function info(){
echo "B INFO";
}
}
class C extends A {
function info(){
echo "C INFO";
function printinfo(A $obj){
if( $obj インスタンス of A)
$obj->info();
}
$a=new A(); c=new C();
printinfo($a); //A の INFO を出力
printinfo($c); //C の INFO を出力
;および抽象クラス
抽象メソッドはサブクラスのテンプレートとして使用されます。
コードをコピーします
コードは次のとおりです:
abstract class Person{
public $name;
abstract function getInfo();
抽象クラスでは、抽象メソッドが必要です。ただし、動的関数は抽象クラスで定義できます。
インターフェース
クラスがインターフェースを継承する場合、インターフェースのすべてのメソッドをカバーする必要があります。インターフェースのメソッドは共有として定義する必要があります。そうしないと、インターフェースは複数のインターフェースから継承できません。 :
コードをコピーします コードは次のとおりです:
interface PCI{
const
//public $name error
function start();
}
インターフェイス内でメソッドは静的として宣言できます
コードをコピーします
コードは次のとおりです: interface A{ function a();}
interface B{ function b() ;}
インターフェイス C は A{ function c(); を拡張します }
クラス D は B,C{
function a(){}
function b(){}
function c(){}
}
Class
クラス宣言:
コードをコピー
コードは次のとおりです: Permission修飾子 class クラス名 { //Permission モンクシンボル: public、protected、private または省略 3.
/ /Class body; //class はクラス作成のキーワードです
} 富lves#\//ps: class キーワードの前に追加できるパーミッション修飾子に加えて、{} の間にクラスのメンバーを追加することもできます。 {} static や abstract などのキーワード。クラス、つまり 1 対の中括弧内のすべてのコンテンツを 1 つのコード内に含める必要があります。クラス内のコンテンツをブロックのペアに分割することはできません。 ;?php
class ConnDB{
//....
?>
//...
?>
クラス内で直接宣言された変数メンバー属性/変数と呼ばれます。その型は、PHP ではスカラー型と複合型になります。また、メンバー属性を宣言する場合は、キーワード: 特定の意味を持つキーワードを使用して変更する必要があります。 : public、protected 、private; 特別な意味は必要ありません: var. メンバーのプロパティを宣言する場合、初期値を割り当てる必要はありません。
例: const PI = 3.1415926 ;
定数の出力にはインスタンス化は必要ありません。クラス名 + 定数名で直接呼び出すことができます。形式は次のとおりです: クラス名::定数名
ps。特別なアクセス メソッド:------"$ this" と "::"
1) $ "this" はすべてのメンバー メソッドに存在します。メソッドを使用するための特別なオブジェクトです。メンバー メソッドはそのオブジェクトに属し、$this アプリケーションはそのオブジェクトを表します。その機能は次のとおりです。具体的には、オブジェクトの内部メンバー間のアクセスを完了します。
2 ) 「::」は、オブジェクトを作成せずにクラス内の定数、変数、およびメソッドを呼び出すために使用できます。 構文形式は次のとおりです。
キーワード::変数名/定数名/メソッド名 キーワード:parent、親クラスのメンバーのメンバー変数、メンバーメソッド、定数を呼び出すことができます
self、現在のクラスの静的メンバーと定数を呼び出すことができます。
クラス名、クラスやメソッド内で定数や変数を呼び出すことができます;
メンバーメソッド: クラス内で宣言された関数は複数の関数を宣言できます。複数のメンバー メソッドの宣言は関数の宣言と同じですが、唯一の特別な点は、そのアクセス権を制御するためにメンバー メソッドを変更できることです。
オブジェクトを作成します。 :
$Variable name = new class name ([parameter]); //クラスのインスタンス化
クラスのメンバーにアクセスする:
各クラスの宣言には特別なメンバー メソッドがあり、通常はいくつかのメソッドを完了するために使用されます。クラスにコンストラクターがない場合、システムはデフォルトでパラメーターなしのコンストラクターを自動的に生成します
コードをコピーする コードは次のとおりです:
function _construct (パラメーター リスト) {
//メソッド本体
};
デストラクターメソッドは、オブジェクトが破棄される前に呼び出される最後のメソッドです。ファイルを閉じたり、メモリを解放したりします。
形式:
コードをコピー
コードは次のとおりです:
function _destruct(){
//メソッド本体
};
オブジェクト指向の機能: カプセル化、抽象化、ポリモーフィズム
Encapsulation:
クラス内のメンバー属性とメソッドを独立した同じユニットに結合します。その目的は、クラスの外部の部分がクラスの内部データ (メンバー プロパティとメンバー メソッド) に自由にアクセスできないようにすることで、オブジェクトへの外部エラーの影響を回避することです。
クラスのカプセル化は、キーワード public、private、protected、static、final によって実現されます。各キーワードの機能については、関連する PHP ドキュメントを確認してください。既存のクラスの属性とメンバーメソッドを継承することで、継承したクラスが親クラスとなり、コードの再利用性と保守性が向上します。
形式:
コードをコピー
コードは次のとおりです: class サブクラス名 extends 親クラス名 { //サブクラスメソッド本体
}
parent:: キーワードを使用して、メンバーメソッドを呼び出すこともできます。子クラスのメソッドに親クラスのメソッドを追加する形式は以下の通りです:
親クラスのParent::Memberメソッド(パラメータ);
いわゆる上書きです。親クラスのメソッド。つまり、子クラスのメソッドを使用して親クラスのメソッドを置き換えます。継承メソッドはメソッド オーバーライドとも呼ばれます。オーバーライドの鍵は、親クラスと同じメソッドをサブクラスに作成することです。
ポリモーフィズム: More モーフィズムとは、複数の種類のオブジェクトを処理するプログラムの機能を指します。つまり、継承によるポリモーフィズムとインターフェイスによるポリモーフィズムです。
ポリモーフィズムは継承を通じて実現されます。つまり、継承された Member メソッドをオーバーライドしてポリモーフィック効果を実現します。コードは次のとおりです。 function printMessage();
}
class SubClassA extends ParentClass{
function printMessage(){ echo "私はクラス A からのメッセージです"; }
}
class SubClassB extends ParentClass{
function printMessage(){ echo "iクラス B からのメッセージです"; } } function printMSG( $object){ if( $object instanceof ParentClass){
$object->printMessage(); }else{
echo "エラー!";
}
$objectA=new SubClassA();
$objectB=new SubClassB();
?>
インターフェイスを定義する次に、クラスはインターフェイスを継承します。
コードは次のとおりです。 InterfaceInfo{
function printMessage(){
echo "メッセージ フォーム クラス A";
}
}
class ClassB は、interfaceInfo{
function printMessage(){
echo "メッセージ フォーム クラス B"
}
}
function printMSG ($object){
if($objectinstanceofinterfaceInfo){
$object -> printMessage();
echo "エラー !"
}
$objectA =new ClassA(); ($objectA);
$objectB();
printMSG($objectB) ;
抽象クラスとインターフェイスはインスタンス化できません。オブジェクト指向ポリモーフィズムと併用することができます。 抽象クラス: 抽象クラス インスタンス化できず、他のクラスの親クラスとしてのみ使用できるクラスです。抽象クラスは、abstract キーワードを使用して宣言されます。以下:
コードをコピー
コードは以下の通りです:
abstract class abstract クラス名 {
抽象関数メンバメソッド(パラメータ) //
}
抽象クラスは、メンバー変数やメンバー メソッドを含め、通常のクラスと似ています。この 2 つの違いは、抽象クラスにはメソッド本体が含まれず、その関数の実装のみが完了できることです。サブクラスでは抽象メソッドも使用されます。
インターフェース:
継承機能により、オブジェクトとクラスの作成が簡素化され、コードの再利用性が向上します。ただし、PHP は単一継承のみをサポートします。複数の継承の場合は、インターフェイスを使用する必要があります。
インターフェイスの宣言: インターフェイスで宣言されたメソッドは、インターフェイス内で宣言できるのは const キーワードだけです。 Access Permissions.ainterface は次のようにインターフェイス形式を宣言します。
コードは次のとおりです。 //メンバーは定数のみです。 //Abstract method; }
インターフェイスはインスタンス化操作を実装できないため、実装形式は次のとおりです。
コードは次のとおりです:
クラスのサブクラス名はインターフェース名 1 [,インターフェース名 2,インターフェース名 3,...]{ //サブクラスのメソッド本体を実装します。
よく使われるキーワード:
1)final:final、finalという意味で、finalキーワードで変更されたクラスやメソッドは継承したり、サブクラスを持ったりすることができません。 ) static: static キーワードによって変更されたメンバー属性およびメンバーメソッドは、静的属性および静的メソッドと呼ばれます。 静的メンバー属性およびメソッドは、インスタンス化されずに直接使用できます。
静的属性: のインスタンスではなく、クラス自体に属します。クラスに格納されているグローバル変数に相当し、クラスを通じて任意の場所にアクセスできます。
クラス名::$static 属性名
の静的プロパティにアクセスする場合。クラス内のメンバーメソッドを作成し、静的プロパティの名前の前に演算子: "self::" を追加します。
静的メソッド: オブジェクトの制限を受けないため、クラスのインスタンス化を渡す必要はありません。クラス内の静的メソッドを直接参照する 参照形式は以下の通りです:
クラス名::静的メソッド名(パラメータ)
クラス内のメンバメソッドで静的メソッドを呼び出したい場合は名前に記述します。静的メソッドの前に演算子「self::」を追加するだけです。静的メソッドでは静的変数のみを呼び出すことができますが、通常のメソッドでは静的変数を呼び出すことはできません。インスタンス化は必要ありません。別の機能は、オブジェクトが破棄された後も、変更された静的データが次の呼び出しのために保持されることです。
オブジェクトの複製は、キーワードを使用して実行できます。元のオブジェクトとは関係がありません。つまり、クローンされたオブジェクトは、元のオブジェクトのコンテンツを保存するためのストレージスペースを再申請します。
$clone object = clone $original クローンオブジェクト名
成功後。クローン作成の場合、その n メンバーのメソッド、属性、および値は完全に等しいです。 コピーを再初期化するには、_clone() を使用する必要があります。
魔法のメソッド _clone() を使用すると、クローンされたコピーを再初期化できます。オブジェクトにはパラメータは必要なく、オブジェクトの $this (コピー オブジェクト) と $that (元のオブジェクト) の参照が自動的に含まれます。
オブジェクトの比較:
「==」は 2 つのオブジェクトの内容を比較することを意味します。 === は、2 つのオブジェクトの参照アドレスが等しいかどうかを比較することを意味します。
オブジェクト タイプの検出: instanceof 演算子は、現在のオブジェクトがどのオブジェクトに属しているかを検出できます。
オブジェクト指向 --- 一般的なマジック メソッド:
共通上記で学んだマジックメソッドは、_construct()、_destruct()、_clone. 以下に、いくつかの一般的なマジックメソッドを紹介します
_get(),_set(); 上記の 2 つのメソッドは、値をコピーまたは取得するために使用されます。 _set() は、プログラムの実行中にプライベート メンバーの属性の値を設定します。_set() メソッドには、変数名と変数値という省略できない 2 つのパラメーターが含まれます。 . このメソッドは積極的に呼び出す必要はなく、プログラムの実行中にオブジェクトの外に private キーワードを追加することができます。 パラメータは 1 つあります。 : プライベートメンバー属性の名前。このメソッドは外部から使用できるようにする値を返します。
_isset(),_unset():
isset() という関数です。オブジェクト指向では、パブリック メンバー属性は isset() 関数を通じて検出できますが、この関数はプライベート メンバー属性に対しては機能しないため、_isset() 関数は Created for を検出するために使用されます。
bool _isset(string name);
_unset() は、オブジェクトの指定された変数とプライベートメンバー属性を削除するためにも使用されます:
void _unset(string name) ;//
_call ():
_call() メソッドの機能は、プログラムが存在しない、または非表示のメンバー メソッドを呼び出そうとしたときに、PHP が最初に _call() メソッドを呼び出してメソッド名とそのメソッドを保存することです。パラメータ(メソッド名とメソッドパラメータ)のうち、メソッドパラメータは配列の形で存在します:
その機能は、オブジェクトを出力するためにechoまたはprintを使用するときにオブジェクトを文字列に変換することです。 _toString() メソッドがない場合、オブジェクトを直接出力すると致命的エラーが発生します。
オブジェクトを出力する場合、出力するオブジェクトの直後に echo または print ステートメントを追加しないように注意してください。余分な文字が途中にある場合、_toSting() は実行されません。
_autoload() メソッド:
独立した完全なクラスを PHP ページに保存し、ファイル名とクラス名の一貫性を保つことは、すべての開発者が行う良い習慣です。この方法では、次回使用するときに簡単に見つけることができます。ただし、ページに多くのクラスを導入したい場合は、 include_once() 関数または require_once() 関数を使用する必要があるという状況があります。 php5 で導入された _autoload() メソッドは、クラスがインスタンス化されていない場合、そのクラスと同じ名前のファイルを自動的に検索します。指定されたパスが見つかった場合は、実行を続行します。そうでない場合は、エラーが報告されます。
コードは次のとおりです。
function _autoload($class_name){
$class_path = $class_name.'.class.php';
if(file_exists($class_path)){
include_once($class_path);
}else {
echo 'クラスが存在しないか、クラスパスが間違っています';
}
}
$class = new Class(); //クラスの内容を出力します。 _toString() メソッドでは、_toString() で定義された内容が出力されます。
http://www.bkjia.com/PHPjc/326008.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/326008.html技術記事オブジェクトの主な 3 つの特性はオブジェクトの動作です。オブジェクトにどのような操作を適用できるか、ライトのオン/オフが動作です。 オブジェクトの形状: これらのメソッドが適用されたときのオブジェクトの反応、色...