uopz_set_mock
(PECL uopz 5, PECL uopz 6, PECL uopz 7)
uopz_set_mock — 新しいオブジェクトを生成する際に、クラスの代わりにモックを使う
説明
mock
がクラス名を含んだ文字列だった場合、
class
の代わりにそれがインスタンス化されます。
mock
はオブジェクトであっても構いません。
注意:
プロパティやメソッドに動的にアクセスした場合にだけ、
mock
オブジェクトを使います。 静的にアクセスした場合には、オリジナルのclass
を使います。 後に示す 例 を参照ください。
パラメータ
class
-
モックで代替するクラスの名前
mock
-
モックとして使うクラス名を含む文字列。またはオブジェクト。 文字列を渡す場合、完全修飾されたクラス名でなければいけません。 この場合、マジック定数
::class
を使うことを推奨します。
戻り値
値を返しません。
変更履歴
バージョン | 説明 |
---|---|
PECL uopz 6.0.0 | static なメンバは、この関数でサポートされなくなりました。 uopz_redefine() や uopz_set_return() を使うか、Componere が代わりに使えます。 |
例
例1 uopz_set_mock() の例
<?php
class A {
public function who() {
echo "A";
}
}
class mockA {
public function who() {
echo "mockA";
}
}
uopz_set_mock(A::class, mockA::class);
(new A)->who();
?>
上の例の出力は以下となります。
mockA
例2 uopz_set_mock() の例
<?php
class A {
public function who() {
echo "A";
}
}
uopz_set_mock(A::class, new class {
public function who() {
echo "mockA";
}
});
(new A)->who();
?>
上の例の出力は以下となります。
mockA
例3 uopz_set_mock() と static メンバ
uopz 6.0.0 以降、static なメンバはサポートされなくなりました。
<?php
class A {
const CON = 'A';
public static function who() {
echo "A";
}
}
uopz_set_mock(A::class, new class {
const CON = 'mockA';
public static function who() {
echo "mockA";
}
});
echo A::CON, PHP_EOL;
A::who();
?>
上の例の出力は以下となります。
A A
Output of the above example in uopz 5:
mockA mockA
参考
- uopz_get_mock() - Get the current mock for a class
- uopz_unset_mock() - 以前に設定したモックを削除する
+add a note
User Contributed Notes
There are no user contributed notes for this page.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google