2011-08-09 6 views
4

내가 구조체있다 :네임 스페이스 인터페이스

/VBAL/ 
/VBAL/Interface/ 
/VBAL/Interface/Named.php 
.... 
/VBAL/Component.php 

Component.php :

namespace JV\VBAL; 
class Component implements \JV\VBAL\Interface\Named {} 

Named.php가 :

namespace JV\VBAL\Interface; 
interface Named {} 

하지만이있어 구문 분석 오류 :

Parse error: syntax error, unexpected '{', expecting T_STRING or T_NAMESPACE or T_NS_SEPARATOR

"namespace"디렉토리를 어떻게 호출합니까? 아니면 파일을 배치합니까?

+0

'캐스케이드 파일 시스템'방법을 찾고 계십니까? – yoda

+0

가장 투명하고 이해하기 쉽도록 코드를 이해하고, 디렉토리 인터페이스가 인터페이스 파일에 더 적합하도록 PHP에서 파일을 배치하는 방법을 찾고 있습니다.하지만 이름 공간을 호출하여 다른 이름이나 파일을 두는 방법 (예 : 옵션보기) : 파일 이름 이동. php를/VBAL/Component/디렉토리 (Component.php의 디렉토리 컴포넌트를 생성)에 저장하지만이 컴포넌트는 클래스 Component에 연결된 우선 순위가되기 때문에이 인터페이스를 사용할 유연성을 박탈합니다. 나는 이걸 모른다. – ajile

+0

이것 좀 봐, 당신에게 몇 가지 팁을 줄 수 있습니다 : http://kohanaframework.org/3.2/guide/media/kohana/cascading_filesystem.png – yoda

답변

12

Interface은 PHP에서 예약어입니다. 네임 스페이스의 일부로 사용할 수 없습니다.

+0

예, 알고 있습니다. 그러나 어떻게 해결되는지, 예를 들어 일반적으로 디렉토리 이름의 표준을 받아 들였습니다 ... – ajile

+0

PHP 5.3+ 표준이 아닙니다. 네임 스페이스에 디렉토리 구조가 반영되도록하려면'Interface','Class','Function' 등의 네임 스페이스를 가질 수 없습니다. BTW :'Class' 또는'Interface '너무. – Mchl

+6

BTW : 좋은 대안 이름은'Interfaces'입니다. – Mchl

1

앞서 언급 한 바와 같이 Interface은 예약어로, 네임 스페이스의 일부로 사용할 수 없습니다. ,있는 당신은 예를 들어, 인터페이스, 추상 클래스, 확장되는 많은 기본 클래스를 저장할 수

또는 Interfaces 어떤 형질 그러나 이것은 내 의견에 -

Base :

두 좋은 대안이다 작은 폼을 사용하기 때문에 덜 사용됨