Use mock instead of class for new objects

- « uopz_set_hook

- uopz_set_property »

- PHP Manual
- Uopz Functions
- Use mock instead of class for new objects

# uopz_set_mock

(PECL uopz 5, PECL uopz 6, PECL uopz 7)

uopz_set_mock — Use mock instead of class for new objects

### Description

uopz_set_mock(string `$class`, mixed `$mock`): void

If `mock` is a string containing the name of a class then it will be instantiated instead of `class`. `mock` can also be an object.

> Note:

> Only dynamic access to properties and methods will use the `mock` object. Static access still uses the original `class`. See example below.

### Parameters

`class`

  The name of the class to be mocked.

`mock`

  The mock to use in the form of a string containing the name of the class to use or an object. If a string is passed, it has to be the fully qualified class name. It is recommended to use the `::class` magic constant in this case.

### Return Values

No value is returned.

### Changelog

Version | Description
--- | ---
uopz 6.0.0 | Mocking static members is no longer supported by this function. uopz_redefine() and uopz_set_return(), or Componere can be used instead.

### Examples

Example #1 uopz_set_mock() example

    <?phpclass A {    public function who() {        echo "A";    }}class mockA {    public function who() {        echo "mockA";    }}uopz_set_mock(A::class, mockA::class);(new A)->who();?>

The above example will output:

    mockA

Example #2 uopz_set_mock() example

    <?phpclass A {    public function who() {        echo "A";    }}uopz_set_mock(A::class, new class {                            public function who() {                                echo "mockA";                            }                        });(new A)->who();?>

The above example will output:

    mockA

Example #3 uopz_set_mock() and static members

As of uopz 6.0.0 mocking static members is no longer supported.

    <?phpclass 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();?>

The above example will output:

    A
    A

Output of the above example in uopz 5:

    mockA
    mockA

### See Also

- uopz_get_mock() - Get the current mock for a class
- uopz_unset_mock() - Unset previously set mock