「autoload_generated.php」が必要です
function __autoload($className) {
global $autoload_list;
$autoload_list[$className];
$x = new A();
?>
------------------------------------------------
3.コンストラクターとデストラクター
PHP コンストラクター __construct() を使用すると、クラスをインスタンス化する前にコンストラクターを実行できます。
コンストラクターはクラス内の特別なメソッドです。 new 演算子を使用してクラスのインスタンスを作成する場合、コンストラクターが自動的に呼び出され、その名前は __construct() である必要があります。
(クラス内で宣言できるコンストラクターは 1 つだけですが、コンストラクターはオブジェクトが作成されるたびに 1 回だけ呼び出されます。このメソッドはアクティブに呼び出すことはできません。
そのため、通常はいくつかの便利な初期化タスクを実行するために使用されます。このメソッドには戻り値がありません。 )
機能: オブジェクトの作成時にオブジェクトを初期化するために使用されます
サブクラスは、分類されたコンストラクターparent::__construct()を実行します。
デストラクター: __destruct () 定義: 特殊な内部メンバー関数、戻り値の型なし、パラメーターなし、自由に呼び出すことはできず、オーバーロードなし。
クラス オブジェクトの寿命が終わると、システムは自動的に呼び出して、コンストラクターに割り当てられたリソースを解放します。
コンストラクター メソッドに対応するのは、デストラクター メソッドです。デストラクター メソッドを使用すると、クラスを破棄する前に、ファイルを閉じる、結果セットを解放するなど、いくつかの操作を実行したり、いくつかの関数を完了したりできます。
デストラクターはパラメーターを取ることができず、その名前は __destruct() でなければなりません。
機能: 後処理をクリーンアップします。たとえば、オブジェクトの作成時に new を使用してメモリ空間を開き、終了する前にコンストラクターに割り当てられたリソースをデストラクターを使用して解放します。
例:
クラス人 {
パブリック $name
公開年齢
//コンストラクターの初期化割り当てを定義します
パブリック関数 __construct($name,$age) {
$this->name=$name;
$this->age=$age;
}
パブリック関数 Say() {
echo "私の名前は:".$this->name."
";
Y エコー「私の年齢は次のとおりです。」
}
//デストラクター
関数__destruct()
️ 「さようなら:」をエコーします。$this->name;
}
}
$p1=新しい人("レン", 25);
$p1->say();
------------------------------------------------- ---------------
4. アクセス制御
プロパティまたはメソッドのアクセス制御は、先頭にキーワード public、protected、または private を追加することで実現されます
public で定義されたクラス メンバーにはどこからでもアクセスできます
定義された保護クラスのメンバーは、そのメンバーが配置されているクラスのサブクラスおよび親クラスからアクセスできます (もちろん、メンバーが配置されているクラスにもアクセスできます)。
プライベートとして定義されたクラス メンバーには、そのメンバーが配置されているクラスからのみアクセスできます。
クラスメンバーへのアクセス制御
クラスメンバーはキーワードpublic、protected、またはprivateを使用して定義する必要があります
メソッドのアクセス制御
クラス内のメソッドは、キーワード public、protected、または private を使用して定義する必要があります。これらのキーワードが設定されていない場合、メソッドはデフォルトの public に設定されます。
例:
クラスMyClass
{
パブリック $public = 'パブリック'
;
保護 $protected = '保護'
プライベート $private = 'プライベート';
関数printHello()
{
$this->public をエコーする
$this->保護済み;
$this->プライベートをエコー
}
}
$obj = 新しい MyClass();
echo $obj->public; // この行は通常通り実行できます
echo $obj->protected; // この行は致命的なエラーを生成します
echo $obj->private; // この行でも致命的なエラーが発生します
$obj->printHello(); // パブリック、プロテクト、プライベートを出力します
------------------------------------------------- ------------
5.オブジェクトの継承
継承の定義: コードの再利用を目的として、元のクラスに基づいて新しいクラスを作成します。
------------------------------------------------
オブジェクトの継承では上書きが使用されます
オーバーロードとは、単一のオブジェクト内で同じメソッド名を持つ異なるパラメータを持つメソッドです
------------------------------------------------
継承はよく知られたプログラミング機能であり、PHP のオブジェクト モデルも継承を使用します。継承は、クラス、オブジェクト、およびオブジェクト間の関係に影響を与えます。
たとえば、クラスを拡張する場合、サブクラスは親クラスのすべての public メソッドと protected メソッドを継承します。ただし、サブクラスのメソッドは親クラスのメソッドをオーバーライドします。
継承は機能設計と抽象化に非常に役立ち、同様のオブジェクトに新しい関数を追加することで、これらの共通関数を書き直す必要がなくなります。
クラス人 {
パブリック $name
公開$年齢
関数say() {
echo "私の名前は:".$this->name."
";
echo "私の年齢は:".$this->age;
}
}
// クラスの継承
クラスの生徒が person {
を拡張します
var $school //生徒がいる学校の属性
関数の勉強() {
echo "私の名前は:".$this->name."
";
Y エコー「私の学校は:」。
️
}
$t1 = 新しい学生
;
$t1->名前 = "張三";
$t1->学校 = "北京ダクス"
$t1->勉強();
---------- --------- --------------- -------- -----
6. 範囲解析演算子 (::)
スコープ解決演算子 (Paamayim Nekudotayim とも呼ばれます)、またはもっと単純にコロンのペアを使用して、静的メンバー、メソッド、および定数にアクセスできます。また、クラス内のメンバーやメソッドをオーバーライドするために使用することもできます。
クラス外のこれらの静的メンバー、メソッド、定数にアクセスする場合は、クラス名を使用する必要があります。
2 つの特別なキーワード self とparent は、クラス内のメンバーまたはメソッドにアクセスするために使用されます。
注:
サブクラスが親クラスのメソッドをオーバーライドすると、PHP は、これらのメソッドがサブクラスで呼び出されるまで、親クラスでオーバーライドされたメソッドを実行しなくなります
例:
クラスOtherClassはMyClassを拡張します
{
パブリック静的$my_static = '静的変数';
パブリック静的関数 doubleColon() {
echoparent::CONST_VALUE
;
echo self::$my_static . "n";
}
}
OtherClass::doubleColon();
?>
http://www.bkjia.com/PHPjc/934463.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/934463.html技術記事 PHP のクラスとオブジェクトの完全な分析 (1) 1. クラスとオブジェクト オブジェクト: このタイプのものにおける各物理オブジェクトの実際の個体。 $a =new User(); インスタンス化後の $a への参照: php エイリアス、2 つの異なる...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。