111 lines
2.4 KiB
Markdown
111 lines
2.4 KiB
Markdown
![]() |
|
||
|
## Codeception\Specify\ConfigBuilder
|
||
|
|
||
|
|
||
|
|
||
|
Configure Specify usage.
|
||
|
|
||
|
Specify copies properties of object and restores them for each specify block.
|
||
|
Objects can be cloned deeply or using standard `clone` operator.
|
||
|
Specify can be configured to prevent specific properties in specify blocks, to choose default cloning method,
|
||
|
or cloning method for specific properties.
|
||
|
|
||
|
```php
|
||
|
<?php
|
||
|
$this->specifyConfig()
|
||
|
->ignore('user') // do not clone
|
||
|
?>
|
||
|
```
|
||
|
|
||
|
#### *public* __construct($config = null)
|
||
|
#### *public* ignore($properties = null)
|
||
|
Ignore cloning specific object properties in specify blocks.
|
||
|
|
||
|
```php
|
||
|
<?php
|
||
|
$this->user = new User;
|
||
|
$this->specifyConfig()->ignore('user');
|
||
|
$this->specify('change user name', function() {
|
||
|
$this->user->name = 'davert';
|
||
|
});
|
||
|
$this->user->name == 'davert'; // name changed
|
||
|
?>
|
||
|
```
|
||
|
|
||
|
* `param array` $properties
|
||
|
* `return` $this
|
||
|
|
||
|
#### *public* ignoreClasses($classes = null)
|
||
|
Adds specific class to ignore list, if property is an instance of class it will not be cloned for specify block.
|
||
|
|
||
|
* `param array` $classes
|
||
|
* `return` $this
|
||
|
|
||
|
#### *public* deepClone($properties = null)
|
||
|
Turn on/off deep cloning mode.
|
||
|
Deep cloning mode can also be specified for specific properties.
|
||
|
|
||
|
```php
|
||
|
<?php
|
||
|
$this->user = new User;
|
||
|
$this->post = new Post;
|
||
|
$this->tag = new Tag;
|
||
|
|
||
|
// turn on deep cloning by default
|
||
|
$this->specifyConfig()->deepClone();
|
||
|
|
||
|
// turn off deep cloning by default
|
||
|
$this->specifyConfig()->deepClone(false);
|
||
|
|
||
|
// deep clone only user and tag property
|
||
|
$this->specifyConfig()->deepClone('user', 'tag');
|
||
|
|
||
|
// alternatively
|
||
|
$this->specifyConfig()->deepClone(['user', 'tag']);
|
||
|
?>
|
||
|
```
|
||
|
|
||
|
* `param bool` $properties
|
||
|
* `return` $this
|
||
|
|
||
|
#### *public* shallowClone($properties = null)
|
||
|
Disable deep cloning mode, use shallow cloning by default, which is faster.
|
||
|
Deep cloning mode can also be disabled for specific properties.
|
||
|
|
||
|
```php
|
||
|
<?php
|
||
|
$this->user = new User;
|
||
|
$this->post = new Post;
|
||
|
$this->tag = new Tag;
|
||
|
|
||
|
// turn off deep cloning by default
|
||
|
$this->specifyConfig()->shallowClone();
|
||
|
|
||
|
// turn on deep cloning by default
|
||
|
$this->specifyConfig()->shallowClone(false);
|
||
|
|
||
|
// shallow clone only user and tag property
|
||
|
$this->specifyConfig()->shallowClone('user', 'tag');
|
||
|
|
||
|
// alternatively
|
||
|
$this->specifyConfig()->shallowClone(['user', 'tag']);
|
||
|
?>
|
||
|
```
|
||
|
|
||
|
* `param bool` $properties
|
||
|
* `return` $this
|
||
|
|
||
|
#### *public* cloneOnly($properties)
|
||
|
Clone only specific properties
|
||
|
|
||
|
```php
|
||
|
<?php
|
||
|
$this->specifyConfig()->cloneOnly('user', 'post');
|
||
|
?>
|
||
|
```
|
||
|
|
||
|
* `param` $properties
|
||
|
* `return` $this
|
||
|
|
||
|
|