ホームページ > php教程 > php手册 > PHPの基礎知識:クラスとオブジェクト(1)

PHPの基礎知識:クラスとオブジェクト(1)

WBOY
リリース: 2016-06-13 12:35:12
オリジナル
1186 人が閲覧しました

クラス定義:
はキーワード class で始まり、その後にクラス名が続きます。クラス名は、PHP 予約語以外の任意の名前にすることができます。その後に 1 対の中括弧が続き、クラス メンバーとメソッドの定義が含まれます。

疑似変数 $this
は、 オブジェクト 内でメソッドが呼び出されるときに使用できます。 $this は呼び出し元オブジェクトへの参照です (通常はメソッドが属するオブジェクトですが、メソッドが 2 番目のオブジェクト内から静的に呼び出される場合は別のオブジェクトになることもあります)。
//??静的呼び出しの内部関数は何ですか?
例を見てください:
class A
{
function foo ( )
{
if (isset($this)) {
echo '$this が定義されています (';
echo get_class($this);
echo ")n";
」 $this は定義されていません。n";
A::foo();
}
}
$a = new A();
$a->; foo();
A::foo() ;
$b = new B();
$b->bar();
B::bar();

出力結果は次のとおりです。

$this は定義されています (a)
$this は定義されていません。
$this は定義されています (b)
$this は定義されていません。

/*これだけは知っておきたい サンプルメモリの具体的な実装などが理解できません。わかりやすく説明できる人がいたら教えてください。寮の牛頭は今冬眠中です、目が覚めたら聞いてみます。 */

new

オブジェクトのインスタンスを作成するには、新しいオブジェクトを作成して変数に割り当てる必要があります。新しいオブジェクトには、オブジェクトがコンストラクターを定義し、エラーで例外がスローされない限り、作成時に常に値が割り当てられます。
オブジェクトの既に作成されたインスタンスを新しい変数に割り当てると、新しい変数はオブジェクトに割り当てられた場合と同じインスタンスにアクセスします。この動作は、インスタンスを関数に渡すときと同じです。クローン作成を使用して、すでに作成されたオブジェクトの新しいインスタンスを作成できます。

(短い文ですが、わかりにくいかもしれません。)

例は次のとおりです。
class SimpleClass
{
// メンバー宣言
public $var = 'デフォルト値';

// メソッド宣言
public function displayVar() {
echo $this->var;
}
}

//下の図を見てください。1>new はヒープ (ヒープ) 内のオブジェクトをインスタンス化します。 2> ポインタ $instance を彼に指す
$instance = new SimpleClass();

//3> ポインタ $assigned をヒープ内のインスタンス化されたオブジェクトに指す
$ assign = $instance;
//4>$instance のリファレンス (アドレス) を $reference
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // 5> $instance とヒープ内のインスタンス間の接続を中断します。
var_dump($instance);
var_dump($reference);var_dump($assigned);
出力:
NULL
NULL
object(SimpleClass)#1 (1) { ["var"]=>
string(30) "$assigned will have this value"
}
図プロセス全体:


クラス継承 extends
クラスは、宣言内で extends キーワードを使用して、別のクラスのメソッドとメンバーを継承できます。複数のクラスを拡張することはできません。継承できるのは 1 つの基本クラスのみです。


継承されたメソッドとメンバーは、親クラスがメソッドの定義時に Final キーワードを使用しない限り、同じ名前で再宣言することでオーバーライドできます。オーバーライドされたメソッドまたはメンバーには、parent:: を通じてアクセスできます。

(継承の仕組みは何ですか?)
ソースコードは次のとおりです:
class ExtendClass extends SimpleClass

{

// 親を再定義しますMethod function displayVar() { echo "クラスn の拡張";parent::displayVar();
}
}$extended = new ExtendClass();
$extended->displayVar();

出力:

クラスの拡張
デフォルト値



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート