새로운 클래스는는 다른 개체 유형으로 PHP 객체를 복사하려면 어떻게
호환
답변
당신은 할 수 귀하 클래스는 비어있는 것을 인스턴스화 해, 임의의 수의 메소드에 의해로드됩니다. 이러한 방법 중 하나는 PHP는 객체가 배열에 다른 전체를 많이하지 않고, 모든 PHP 4 개체입니다
class childClass extends parentClass
{
function childClass()
{
//do nothing
}
function loadFromParentObj($parentObj)
{
$this->a = $parentObj->a;
$this->b = $parentObj->b;
$this->c = $parentObj->c;
}
};
$myParent = new parentClass();
$myChild = new childClass();
$myChild->loadFromParentObj($myParent);
내가 당신에게 것 상상 PHP4 할 필요가 원래 객체의 하위 클래스입니다 일종의 "복사 생성자"를 만들어야합니다. 그런 다음 원본 객체를 전달하면서 새 하위 클래스 객체를 만듭니다.
가장 좋은 방법은 당신이 할 수 있도록 서브 클래스에 clone 메소드를 작성하는 것입니다 :
$myvar = $subclass->clone($originalObject)
을 당신이 데코레이터 패턴으로 볼 수 있었던 것처럼 다른 방법으로는 소리 php example
복제본을 직접 구현하지 않는 한 PHP4는 사용하지 않습니다. –
거기에서 데이터를 복사 한 후 인수로 부모 클래스의 인스턴스를 적용하고 수
이function clone($object, $class)
{
$new = new $class();
foreach ($object as $key => $value)
{
$new->$key = $value;
}
return $new;
}
$mySubclassObject = clone($myObject, 'mySubclass');
그것의 꽤하지, 그 certianly 나는 좋은 방법이라고 생각 것없는 것,하지만 은 재사용이며, 그것은 멋지다 : 변수는 공공, 당신은 다음과 같이 몇 가지 지저분한 물건을 할 수 있습니다 .
당신은이 질문에 진지하게 대답 할 것이지만 왜이냐고 묻는다면 약간의 흑 마법으로 할 수 있습니다. 그것은 당신의 디자인에 심각하게 잘못된 것이 있음을 시사합니다. 그럼에도 불구하고
:
function change_class($object, $new_class) {
preg_match('~^O:[0-9]+:"[^"]+":(.+)$~', serialize($object), $matches);
return unserialize(sprintf('O:%s:"%s":%s', strlen($new_class), $new_class, $matches[1]));
}
이 다른 개체 또는 리소스에 대한 참조가 손실되는 것을 의미 일반적으로 직렬화와 같은 제한이 적용됩니다.
진지하게, 그것은 작동합니다. 하지만 어떻게?! – Alfa
- 1. NetStream 객체를 복사하려면 어떻게해야합니까?
- 2. 개체를 다른 개체 유형으로 설정하려면 어떻게해야합니까?
- 3. 는 어떻게 선택 NSTreeController 개체
- 4. 한 이미지의 일부를 다른 이미지로 복사하려면 어떻게합니까?
- 5. 는 협회 개체
- 6. 는 어떻게 새로운 Zend_View 객체를 생성하는 컨트롤러
- 7. PHP : 동적으로 결정된 유형으로 변환
- 8. 는 오류 개체 참조가 개체
- 9. PHP는 객체를 기본 데이터 유형으로 사용해야합니까?
- 10. 하나의 PHP 파일에서 다른 PHP 파일로 객체를 옮기는 방법
- 11. 입력란의 일부를 다른 입력란에 복사하려면 어떻게해야합니까?
- 12. 숫자가 증가하는 파일을 다른 위치에 복사하려면 어떻게해야합니까?
- 13. Teamcity의 이슈를 다른 서버로 복사하려면 어떻게해야합니까?
- 14. MSBuild를 사용하여 파일을 다른 디렉토리에 복사하려면 어떻게합니까?
- 15. 는 PHP
- 16. 일반 사전을 다른 유형으로 변환
- 17. 는 PHP
- 18. 는 요청 개체
- 19. PHP : 객체를 별도로 유지 하시겠습니까?
- 20. 는 PHP
- 21. 달러 기호가있는 PHP 개체 속성에 어떻게 액세스합니까?
- 22. 다른 개체에서 개체 만들기
- 23. 는 PHP
- 24. 다른 AutoReleasePool에 할당 된 객체를 어떻게 해제합니까?
- 25. 는 PHP
- 26. 는 PHP
- 27. 동일한 변수를 다른 유형으로 재사용하는 방법은 무엇입니까?
- 28. 공장 소녀 : 나는 다른 참조 두 개체, 내가 이전에 만든 하나의 객체를 생성하고 싶은 기존 개체
- 29. 다른 데이터 유형을 void 유형으로 결합하기
- 30. PHP 빈 개체 구성원
이것은 현재 사용하는 솔루션이 적습니다. 나는 다른 어떤 마법도 이것을 기대할 수 없다고 생각한다. –