# uopz_set_mock

(PECL uopz 5)

uopz_set_mock — Use mock instead of class for new objects

### 说明

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.

### 参数

`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.

### 更新日志

版本 | 说明
--- | ---
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.

### 范例

Example #1 uopz_set_mock() example

    <?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

Example #2 uopz_set_mock() example

    <?php
    class A {
        public function who() {
            echo "A";
        }
    }

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

以上例程会输出：

    mockA

Example #3 uopz_set_mock() and static members

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

    <?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() - Unset previously set mock