
ReflectionClass::isCloneable 메서드는 객체가 clone() 메서드를 호출할 수 있는지 여부를 확인합니다.
클래스가 implements Cloneable 인터페이스를 구현하고 있으면 true를 반환합니다.
클래스가 implements Cloneable 인터페이스를 구현하지 않았거나, 인터페이스를 구현했지만 clone() 메서드를 오버라이딩하지 않았으면 false를 반환합니다.
예를 들어, 다음 코드를 살펴보겠습니다.
#hostingforum.kr
php
class CloneableClass implements Cloneable {
public function clone() {
return clone $this;
}
}
class NonCloneableClass {
// clone() 메서드가 구현되지 않았습니다.
}
$cloneable = new CloneableClass();
$nonCloneable = new NonCloneableClass();
var_dump(ReflectionClass::isCloneable($cloneable)); // bool(true)
var_dump(ReflectionClass::isCloneable($nonCloneable)); // bool(false)
위 예제에서 CloneableClass는 Cloneable 인터페이스를 구현하고 clone() 메서드를 오버라이딩했기 때문에 ReflectionClass::isCloneable 메서드는 true를 반환합니다.
반면, NonCloneableClass는 Cloneable 인터페이스를 구현하지 않았기 때문에 ReflectionClass::isCloneable 메서드는 false를 반환합니다.
2025-03-22 18:29