내 시스템에는 두 개의 클래스가 있습니다. 하나는 file이고 두 번째는 File입니다. 내 localhost에서 파일을 인스턴스화 할 때 파일 객체를 가져 오지만 같은 스크립트를 실행하는 내 친구가 대/소문자가 인식되지 않고 "파일"이 "파일"과 같은 File 객체를 가져옵니다. 구성 가능한 부분입니까? 우리는 모두 Windows에서 실행됩니다. 나는 WampServer를 가지고있다. 그는 XAMPP를 가지고있다. PHP에서클래스 이름의 대문자 PHP
답변
클래스 이름 (즉 운영체제에 의존하지 않는다) 대소 문자를 구분하지 않습니다
class myclass {}
$x = new MYclaSS;
var_dump($x);
object(myclass)#1 (0) {
}
그래서 일반적인 조언 등 : 당신은 시작 :
뭔가를 혼합하려고해서는 안 이 같은코드해야 하지 일 :
class ab {}
class AB {}
Fatal error: Cannot redeclare class AB in ... on line x
그 이유는 그가 클래스와 친구를 같은 코드로로드하는 이유를 설명하지 않습니다. – krtek
당신이 옳습니다. 하나의 스크립트에서 두 클래스 ("file"및 "file")가 필요할 경우이 코드가 모두 함께 작동하지 않아야한다는 대답을 펼쳤습니다. 하지만 제공된 정보로는 그가 경험하고있는 것을 짐작할 수 없습니다. 전혀 작동하지 않아야한다는 것을 보여줍니다. – edorian
클래스 로더가 사용되면 동일한 클래스 이름을 가진 두 개의 파일을 가질 수 있습니다. 클래스 로더에 따라 작동 할 수 있습니다.하지만 이것은 단지 큰 문제로 이어질 수 있습니다;) – krtek
PHP는 클래스 이름에 대한 대소 문자를 구분합니다. 즉, 클래스 이름이 File
이고 그 반대 인 경우에도 일반적으로 $file = new file()
을 수행 할 수 있음을 의미합니다.
혹시 클래스 파일 자동로드에 의존하십니까? 이 경우 컴퓨터에 따라 인터프리터가 항상 동일한 파일을 먼저 찾지 않을 수도 있습니다. 이것은 문제를 설명 할 것입니다.
수업 이름을 바꾸는 것이 좋습니다. 서로 다른 두 가지를 구별하기 위해 대소 문자를 사용하는 것은 좋지 않습니다. 클래스 이름은 항상 대문자로 시작합니다.
클래스 이름을 변경할 수 없다면 php namespaces을 살펴 보시기 바랍니다.
대소 문자를 구별하는 파일 시스템의 오토로더는 다른 경우에 당신의 클래스를 찾을 수 없습니다. –
수업은 대문자로 시작하지 않습니다 ... 절대로하지 마십시오 – dsdsdsdsd
@dsdsdsdsd - Y, 왜 기본적으로 모든 표준을 준수합니까? –
클래스 파일 용으로 지연로드을 사용하고 계신지 모르지만 PHP 프레임 워크에서 프로그래밍 중일 수 있습니다. 비밀은 __autoload
기능에 있습니다. 그것을 찾아라.
체크 PHP manual for Autoloading.
다음 코드 : Cannot redeclare class File
그래서 다시, 트릭 가 포함되어있는 파일이 될 수 있습니다
<?php
class file {
public $a;
}
class File {
public $a2;
}
$x = new file();
오류를 제공합니다.
코드의 동작에 따라 클래스 중 하나가로드되지 않는 것으로 표시됩니다. 그렇지 않으면 클래스 재 선언 오류이 표시됩니다. 아마도 file
클래스를로드 한 후 File
에 정의를 찾으면 자동으로 로더가됩니다 (PHP의 대소 문자를 구별하지 않으므로 클래스를 이미로드했다고 가정합니다).
- 1. 프로그래밍에서 사람 이름의 대문자 사용
- 2. ZEND가 파일 이름의 대문자 사용을 변경합니다.
- 3. PHP : 문자열의 대문자 수를 계산하십시오.
- 4. PHP : 함수 이름의 변수
- 5. 대문자 및 소문자의 클래스 이름을 사용하는 오토로더
- 6. PHP 변수/함수/클래스 이름의 최대 길이는 얼마입니까?
- 7. 같은 이름의 클래스를 사용하는 클래스
- 8. 클래스 이름의 일부를 삭제하는 jQuery
- 9. PHP 클래스 호출
- 10. 대문자 (대문자) permalink는 어떻게 만들 수 있습니까?
- 11. 정규화 된 클래스 이름의 요점은 무엇입니까?
- 12. 두 어셈블리에서 같은 이름의 클래스 (의도적으로)
- 13. 다른 파일에 같은 이름의 다른 클래스 버전
- 14. 클래스 이름의 유효성을 검사하는 .NET 함수가 있습니까?
- 15. 약자로 표시된 클래스 이름의 약어 표현
- 16. PHP 클래스
- 17. 동적 PHP 하위 클래스 이름
- 18. PHP 파일 처리; 폴더 이름의 특수 문자
- 19. PHP 클래스 호출 외부 클래스
- 20. php 클래스가 확장되었습니다 - 동일한 이름의 속성/메소드를 사용합니까?
- 21. 대문자, 숫자 또는 대문자, 소문자 및 숫자로 일치하는 정규식
- 22. WiX에서 편집 컨트롤의 대문자
- 23. 임의 대문자 - 소문자
- 24. 정규 표현식 대문자 교체
- 25. 작은 대문자 글꼴 속성?
- 26. Netbeans에서 대문자 코드 완성
- 27. schema.yml에서의 대문자 소문자 구분
- 28. jQuery에서 소문자와 대문자
- 29. AS3에서 대문자 잡기
- 30. 힘내 - 1.7.0.2는 대문자
같은 이름을 섞어서는 안됩니다. – JamesHalsall