문제

당신은 무엇을합니까 (특히 PHP) 사람들은 클래스 이름이 프로젝트 디렉토리와 관련된 파일의 경로를 반영하는 클래스의 이름 지정 컨벤션에 대해 생각합니까? 예 :

# /project/Session/Abstract.php
# /project/Session/Database.php

class Session_Database extends Session_Abstract ...

나는 당신이 아이디어를 얻을 것이라고 확신합니다. 나는 또한 일부 전문가가 분명하다고 확신합니다. 그러나 당신은 어떻게 생각하십니까 - 탐색하기 쉬운 아주 멋진 디렉토리 구조를 얻기 위해 클래스 이름을 연장하는 것이 가치가 있습니까?

이것은 또한 php : str_replace ( '_', '/', $ class)에서 1 라이너 __atoload ($ class) 정의를 허용합니다.

나는 어떤 사람들이 그러한 협약이 바보라고 생각할 것이라고 생각합니다. 나는 개인적으로 그것을 좋아하지만 다른 사람들이 사용하는 것을 보지 못했고 그것이 실제로 잘 작동하는지 확실하지 않습니다.

단점 중 하나는 포함/요구 호출을 제거하면 모든 클래스가 자동로드 함수에 따라 (일부는 결합), 일부는 논쟁 할 수있는 느슨한 커플 링에 대한 이해를 준수하지 않는다는 것입니다.

그러한 접근법에 대해 지금까지 알려진 유일한 참조는 http://softwareengineering.vazexqi.com/files/pattern.html

그래서, 당신은 이것에 대한 의견이 있습니까?

도움이 되었습니까?

해결책

그럼 당신은 보지 않았습니다. 이 접근법을 사용합니다. 또한 Zend 프레임 워크. PHP 세계에서 다소 확립 된 표준입니다. 나는 언제 처음 만났는지 모르겠지만, 개인적으로 그것을 사용하고 몇 년 동안 내 자신의 프레임 워크의 일부와 ZF와 같은 공개적으로 이용 가능한 프레임 워크의 일부로 그것을 좋아했습니다.

다른 팁

내가 이것에 대해 좋아하지 않는 유일한 진짜는 코드를 움직여야 할 때 많은 이름을 다시 작업한다는 것입니다. 그러나 Emil은 이미 이것이 코스에 거의 동등하다고 지적했지만 추가하고 싶습니다. PHP Userland 이름 지정 규칙.

나는 그 컨벤션을 사용합니다.

그것은 예쁜 파일 구조를 갖는 데 도움이 될뿐만 아니라 네임 스케이팅 문제에도 도움이됩니다. 이 이름 지정 컨벤션은 클래스를 중복 클래스 이름을 피하는 데 도움이됩니다.

PHP 5.3이 나오고 마침내 네임 스페이스가 있으면 여전히이 컨벤션을 사용하겠습니다. 다르게 할 일은 클래스 이름을 단축하고 접두사를 올바른 네임 스페이스로 변환하고 자동 로더에서 조정하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top