2017-01-20 1 views
1

프로젝트를 너무 쓸데 없게 만들고 싶으므로 간단하게 복사하여 붙여 넣을 수 있습니다.알 수없는 프로젝트 레벨을위한 AutoLoader

내 프로젝트 구조는 ProjectName/(bin, config, lib)입니다.

복사 + 붙여 넣기 후에 ProjectName1/lib/ProjectName2/lib/ProjectName3 /과 같은 체인이 있습니다.

이제 Autoloader가 파일이 호출 된 레벨에 따라 파일을 검색하면 좋을 것입니다.

예를 들어 ProjectName1/lib/ProjectName2/lib/내의 클래스가 "새 구성"을 호출하면 ProjectName1/lib/ProjectName2/config/config.php에있는 구성 파일을 수신해야합니다.

(하지만 ProjectName1/config/config.php에는 없으며 ProjectName1/lib/ProjectName2/lib/ProjectName3/config/config.php의 설정은 없습니다).

이 방법이 있습니까?

편집 : 파일을 고유하게 만드는 것이 합리적입니까? 예 : 'config.php'가 'ProjectName2Config.php'인 경우 충돌 가능성이 거의 없습니다. 따라서 오토로더는 어디서나 검색 할 수 있으며 결국 파일임을 알게됩니다.

편집 : 각 프로젝트마다 복사 + 붙여 넣기의 이유로 자신의 오토로더를 사용할 수 있습니다. 그러나 나는 ProjectName1에 대해서만로드 할 것이라고 생각했다. 각각을 간단하게 유지할 수 있도록 모든 것을로드하는 것이 더 좋습니까?

건배, 피터

PS : 나는 그냥 휴식을 프로그래밍 3 년간했다. 위의 내용이 일반적으로 나쁘다고 말하면 왜 행복합니까? -

+0

단지 그것을하는 PHP 기능을 작성하고 오토로더로 등록하십시오. 그냥 놀아주세요. 단점은 코드 작성 도구가 올바른 클래스를 찾는 데 어려움을 겪을 수 있으며, 구조가 충분히 지저분해질 수 있습니다. (http://php.net/manual/en/function.spl-autoload-register.php) –

답변

0

나는 이것이 프로젝트를 관리하는 이상한 방법이라고 생각합니다. Project1의 주 스크립트와 Project2의 주 스크립트는 어디에 있습니까? 나는 내 index.php를 또는 주 프로젝트에서이 쓰기입니다 무엇을 예를 들어

는/lib에 파일을 포함한다 :

<?php define('ROOT_PATH', dirname(__FILE__) . '/'); ?> 

을 그리고 난 항상 포함 경로의 시작으로이 ROOT_PATH을 사용합니다. 귀하의 경우에는

Project1의 ROOT_PATH가 Project1의에서 "의/var/www /에서 Project1의/lib 디렉토리/Project2에 /"따라서

새로운 구성 될 것 "은/var/www /에서 Project1의 /"및 Project2에 ROOT_PATH 같은 것 Project2에서는 자신의 config.php 파일을 사용합니다.

+0

고맙습니다. 다시 움직이지 않는 한, 이것은 좋은 것처럼 들립니다. 하지만 내가 가진 말 : Project1이 시작됩니다 ... $ project2 = new Project2; $ someValue = $ project2-> getSomeThing(); Project1 계속 ... 새 SomeThingFromProject1(); 이 경우 ROOT_PATH는 Project2에서 가져옵니다. 맞습니까? –

+0

귀하의 질문에 대답하려면 : 나는 다른 편집에서 예제 에서처럼 Project2를 사용하고자합니다. Project1에서 작업 중이며 Project2에서 필요한 것이있을 수 있다면 필요한 부분 만 복사하는 대신 전체 프로젝트를 포함하는 것을 선호합니다. Project2가 결국 업데이트 될 때이를 관리하기가 더 쉽기를 바랍니다. 어쩌면 나는 "패키지"가 아니라 "프로젝트"라는 단어를 사용해야 할 것입니다. –

+0

"패키지"또는 "모듈"의 경우, 이해합니다. 그런 다음 라이브러리, 모듈/패키지 (및 기타 자료)가 포함 된 프로젝트를 갖게됩니다. 그리고 모든 모듈/패키지는 자체 구성,보기, 컨트롤러, sqls 등을 가지며 독립적 일 것입니다. – zenko

관련 문제