similar function:
<?php
function isCloneable(object $obj): bool
{
return !method_exists($obj, '__clone') || is_callable([$obj, '__clone']);
}
?>
(PHP >= 5.4.0)
ReflectionClass::isCloneable — Returns whether this class is cloneable
Returns whether this class is cloneable.
이 함수는 인수가 없습니다.
Returns TRUE
if the class is cloneable, FALSE
otherwise.
Example #1 Basic usage of ReflectionClass::isCloneable()
<?php
class NotCloneable {
public $var1;
private function __clone() {
}
}
class Cloneable {
public $var1;
}
$notCloneable = new ReflectionClass('NotCloneable');
$cloneable = new ReflectionClass('Cloneable');
var_dump($notCloneable->isCloneable());
var_dump($cloneable->isCloneable());
?>
위 예제의 출력:
bool(false) bool(true)
similar function:
<?php
function isCloneable(object $obj): bool
{
return !method_exists($obj, '__clone') || is_callable([$obj, '__clone']);
}
?>
this method checks is `__clone()` method was declared as private
I wonder how this method decides of is it clonable or not. There is no explanation.
This does not work for many of core-classes, just like most other reflection methods.