クラス定義:
はキーワード 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);
出力:
NULLNULL
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();
出力:
クラスの拡張
デフォルト値

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

メモ帳++7.3.1
使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
