2012-02-28 3 views
3

빠른 질문. PHP 클래스 파일을 myClass.class로 저장하고 다른 "일반".php 파일에 포함시킬 수 있습니까?OOP PHP 파일을 .class로 저장하십시오.

PHP 5.3에서는 정상적으로 작동하지만 나쁜 실행인지 궁금합니다.

TL; DR :

useObjects.php 
<? include('myClass.class'); 
$my_object_1 = new myClass(); 
?> 

myClass.class 
<? 
//constructors and functions 
?> 

감사합니다!

편집 : 이것은 내 조직을위한 것입니다.

+0

작동,하지만 그것은 또한 사람들이 같은 코드를 볼 수 있도록 할'텍스트/만약 그들이 경로를 알고있다. 공격자에게 불안감에 대한 통찰력 부여 –

+0

이상한 이름의 소스 파일을 text/plain으로 보는 기능은 document_root 외부에있는 경우 문제가되지 않습니다. –

+0

주석 주셔서 감사합니다. 공개되지 않은 디렉토리에 있습니다. – user1062058

답변

8

웹 서버가 .class 파일을 PHP 스크립트로 구문 분석하도록 구성되지 않았고 파일이 문서 루트 아래에 있고 브라우저를 통해 액세스되는 경우 PHP 소스 코드가 표시됩니다. 최종 사용자는 소스 코드 또는 데이터베이스 연결 세부 사항과 같은 중요한 데이터를 노출합니다.

그 이상으로, 그것은 관례입니다. PHP는 말하기에 너무 많은 규칙이 없지만 .class은 꽤 특이한 것입니다. 그러나 *.class.php은 매우 일반적입니다.

+0

감사합니다. 정규 .php 확장자를 사용합니다. – user1062058

+0

require() 및 include() 본질적으로 평가합니다. PHP로 구문 분석 할 서버를 구성 할 필요가 없습니다. (미안, 명확히하기 위해,이 진술은 설명을위한 것입니다. :) –

+0

또한 * .php를 사용하지 않으면 소스 강조 표시 (vim 또는 NetBeans 에서처럼)가 작동하지 않습니다. –

5

.class은 반드시 일반적인 PHP 규칙이 아니기 때문에 드문 경우지만 기술적 인 이유는 없습니다.

+2

그건'.class'가 Java와 공통적 인 것이므로 파일 이름이 혼란을 야기 할 수 있습니다. – imm

0

아무런 문제가 없지만 사용하고 있습니다. 일반적으로 나는 포함하는 수단과 함께 .inc를 사용하는 것을 선호합니다.

1

실제로 중요한 것은 PSR-0입니다. 그 표준과 함께 작동하도록 클래스의 이름을 지정해야합니다.

  • \Doctrine\Common\IsolatedClassLoader = Doctrine/Common/IsolatedClassLoader.php
  • \Symfony\Core\Request = Symfony/Core/Request.php
  • \Zend\Acl = Zend/Acl.php
  • \Zend\Mail\Message = Zend/Mail/Message.php