2012-11-15 6 views
0

테스트 할 PHP 5.2가 설치되어 있지 않습니다.PHP 5.2에서 namespace를 사용하여 class_exists 사용

composer이 설치되어 있는지 테스트하려면 if (class_exists('Composer\Autoload\ClassLoader'))을 사용하고 싶지만 내 코드는 PHP 5.2와 호환되어야합니다.

PHP 5.2는 백 슬래시 문자로 고정됩니까? 아니면 그냥 false를 반환하고 스크립트로 계속됩니까?

+0

요즘 왜 5.2를 지원해야합니까? 거의 2 년 전 End of Life로 갔고 이후 보안 패치가 없었습니다. 정상적인 네트워크 관리자는 시스템 근처의 어느 곳에서나 허용합니다. – SDC

+0

하하, 전적으로 동의합니다. 나는 오픈 소스 프로젝트에 작은 패치를 제출하고 아무것도 망가지려고하지 않고있다. 나는 그들을 5.2의 지원을 떨어 뜨리게하려고한다. :) –

답변

2

네임 스페이스는 PHP 5.2에 없으며 PHP 5.3의 새로운 기능으로 추가되었습니다.

질문에 대한 직접적인 대답은 yes입니다. PHP 5.2는 백 슬래시와 관련하여 유효한 구문이 아니기 때문에 백 슬래시에 걸릴 수 있습니다.

인용 한 코드 줄 자체가 구문 상 올바르지 않습니다. 왜냐하면 사용자가 지적한대로이 줄은 단지 문자열이기 때문입니다. class_exists()에 전달하면 문제가 해결 될 수도 있고 아닐 수도 있습니다. - 확인을 위해 PHP 5.2를 더 이상 사용하지 않아도됩니다. 추측한다면 나는 완전히 부 풀리기보다는 어떤 종류의 경고 나주의를 던질 것으로 기대합니다.

하지만 작곡가 자체는 5.2와 호환되지 않으므로 사용자가 5.2이면 정의에 따라 Composer를 설치할 수 없습니다. 따라서 먼저 phpversion()version_compare()을 호출하여 PHP 버전을 직접 확인하여 전체 문제를 피할 수 있다고 제안합니다. 이렇게하면 class_exists() 전화로 불쾌감을 피할 수 있습니다.

+0

그것은 단지 문자열이다. 실제로 오류가 발생합니까, 아니면 거짓으로 돌아가서 사물을 만듭니 까? –

+0

이 답변을 편집했습니다. :) – SDC

+0

아아, class_exists를 호출하기도 전에 5.3을 확인하는 것이 좋습니다. 이 경우 나는 전체적인 문제를 회피하기 위해'ComposerAutoloaderInit'에 대한 테스트를 끝냈지 만, 5.2에서 이것을 시도하고 어떤 일이 일어날 지 여전히 관심이 있습니다. –