-
Notifications
You must be signed in to change notification settings - Fork 0
/
CloneableInterface.php
36 lines (34 loc) · 1.25 KB
/
CloneableInterface.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
/**
* FlorianWolters\Component\Core\CloneableInterface
*
* PHP Version 5.4
*
* @author Florian Wolters <wolters.fl@gmail.com>
* @copyright 2011-2014 Florian Wolters (http://blog.florianwolters.de)
* @license http://gnu.org/licenses/lgpl.txt LGPL-3.0+
* @link http://github.com/FlorianWolters/PHP-Component-Core-Cloneable
*/
namespace FlorianWolters\Component\Core;
/**
* A class implements the {@see CloneableInterface} to indicate to the magic
* `__clone` method of a class that it is legal for that method to make a
* field-for-field copy of instances of that class.
*
* By convention, classes that implement this interface should use either the
* {@see ShallowCloneTrait} or the {@see DeepCloneTrait}.
*
* Invoking the magic `__clone` method on an instance that does not implement
* the {@see CloneableInterface} results in the exception {@see
* CloneNotSupportedException} being thrown when using the {@see
* ShallowCloneTrait} or the {@see DeepCloneTrait}.
*
* Note that this interface does not contain the magic `__clone` method.
* Therefore, it is not possible to clone an object merely by virtue of the fact
* that it implements this interface.
*
* @since Interface available since Release 0.1.0
*/
interface CloneableInterface
{
}