2011-09-21 6 views
0

클래스와 부모 클래스 사이에 순환 루프가 발생했습니다.PHP : 사용중인 클래스의 인스턴스가 있습니까?

내가 문제를 해결하기 위해 생각할 수있는 유일한 방법은 사용중인 하위 클래스의 인스턴스가 있는지 테스트하는 것입니다. 그걸 시험 할 여지가 있습니까?

그래서 휴식을 취하고 문제를 되돌아 보았습니다. 루프는 입력을 적절한 로직에 전달하는 클래스의 __construct 메소드로 인해 발생했습니다. 이 클래스는 다른 클래스에 상속되므로 사용자가 일반적으로 자동으로 수행해야하는 작업을 쉽게 구현할 수 있습니다.

내가 보지 못한 것은 자식 클래스가 호출 될 때마다이 생성자가 올바른 코드로 사용자를 다시 라우팅하도록 활성화되었다는 것입니다. 입력 내용이 동일하기 때문에 하위 클래스로 다시 보내 루프를 설정합니다. 대신 생성자를 꺼내 사이트 색인에 필요한 메소드를 호출하여 하위 클래스가 더 이상 스스로를 호출하지 않도록함으로써이 문제를 해결했습니다.

+0

추측하지 않으려면 몇 가지 코드를 넣을 수 있습니까? –

+0

아마도 처음 인스턴스화 될 때 true로 설정되는 childclass의 정적 멤버 var일까요? 기본적으로 클래스에서'static $ instantiated = false;'를 생성자에서 true로 설정합니다. –

답변

0

글쎄, 루프를 피하기 위해 코드를 조정해야합니다. 그것은 당신이 한 일과 나중에 문제를 일으킬 수있는 나쁜 일처럼 들립니다. 그래서 제 제안은 루프를 고치지 않고 회피하지 않도록 코드를 재 설계하는 것입니다.

+0

^^ 질문에 대한 수정 사항이 추가되었습니다. –

0

instanceof을 사용하여 클래스의 인스턴스인지 확인할 수 있습니다. 또는 is_subclass_of이 클래스를 확장하는지 확인하십시오. 누군가가 더 나은 디자인을 제안 할 수있는 코드를 게시하면 루프를 피할 수 있습니다.

관련 문제