2009-10-27 4 views
1

저는 작은 PHP 응용 프로그램 (총 400K)에서 작업 해 왔습니다. 그러나 건물과 학습 과정에서 많은 정크 파일이 있습니다.PHP 프로젝트를 어떻게 정리합니까?

나는 내 일을하고 적절하게 이름을하지 않았다, 즉 demo1.php 요법 ...

의존성 검사 할 수있는 방법이 있나요? 아니면 그냥 삭제, 새로 고침과 반복입니까? 필요한 경우 삭제를 취소 하시겠습니까?

답변

4

당신을 위해이 작업을 수행 할 것입니다 마법 도구가 없습니다, 당신이 당신의 자신의 솔루션을 구현하는 데 도움이됩니다 만 기능이있다.

당신이 원하는 기능이 지금까지 포함되어있어 모든 파일의 배열을 반환합니다

get_included_files(); 

입니다. 이것을 부트 스트랩 파일의 끝 부분 (또는 모든 개별 파일의 끝에)에 넣으면 포함되었거나 필요한 모든 파일의 목록을 얻을 수 있습니다. 이것은 file_get_contents, fopen 등으로 열린 파일들에 대해서는보고하지 않을 것입니다. 그래서 당신을 위해 이러한 함수들을 호출 할 래퍼 함수/클래스를 갖는 것이 좋습니다. (필요하다면 당신이 그 작업을 할 수있게 해줍니다)

접근 방식 어딘가에 포함 된 파일을 기록한 코드를 추가하여 하루나 이틀 동안 앱을 실행 시키거나 (또는 ​​모든 기능을 직접 연습 해보십시오)이 방법을 사용하면 프로젝트의 전체 파일 목록을 얻을 수 있습니다 실제로 사용하는 경우 목록에 표시되지 않는 파일을 정리할 수 있습니다. 있어야되는 것과 대 어떤 방법으로 포함로 구성되는 PHP 파일을 알 수있는 IDE 또는 유사한 도구에 대한 방법이 없다 -이 기록은 달성하기 어려울 것 그것은 간단

file_put_contents('/tmp/files.txt',print_r(get_included_files(), true),FILE_APPEND); 
+0

유망하지만 조금 머리를 감쌌다. 수동 청소보다 시간이 오래 걸릴 것입니다. – shaiss

0

버전 제어 시스템부터 시작해야합니다. 프로젝트가 이미 망가져 있다면 총알을 물지 말고 수동으로 청소해야 할 수도 있습니다.

+0

전 테스트 파일을 커밋했지만 서브 버전을 사용하고 있습니다. 내가 수동으로 가야 할 것 같아. – shaiss

+1

@shaiss 왜 테스트 파일을 커밋 하시겠습니까? 동일한 파일을 다른 이름으로 반복적으로 커밋 한 경우 버전 컨트롤을 올바르게 사용하지 않습니다. –

+0

같은 파일이 아닙니다. 즉. readini를 만들고 ini 파일을 읽고 값을 가져 오는 방법을 알아 냈습니다. 그런 다음 testEmp를 작성하고 테스트를 수행했습니다. 당신의 권리, 나는 처음부터 그들을 위탁해서는 안됩니다. – shaiss

3

나는 지금 같은 상황에 있는데, 몇 년 전의 매우 큰 프로젝트 부분을 정리하고 있습니다.

  • 버전 관리 : 나는이 일을 가장 중요한 발견하고 무엇

    . TortoiseSVN은 훌륭한 Windows 탐색기 통합 때문에 TortoiseSVN을 사용합니다. 나는 많은 고통과 고통을 피하기 위해 각 변경 후에 체크인하려고 노력한다.

  • 아주 좋은 편리한 검색 기능

    는 (여기서 $ XYZ-> 사용 loadFromOtherSource입니까?) 기본 종속성 검사를 확인합니다. Nusphere PhpEd를 사용하지만 거기에는 좋은 검색 기능이있는 많은 도구가 있습니다.

그 외에는 내가 아는 PHP 용 신뢰할 수있는 리팩토링/종속성 검사 도구가 없습니다.

0

수 최종 사용자가 직접 액세스합니다.

PHP는 당신이 정말로 동적 파일을 포함 할 수 있다는 언급하지 않는 등 결국이

$page = $_GET['page']; 
include('templates/' . $page . '.php'); 

당신은 실사를 많이해야 할 것입니다.

0

몇 년 전에 우리 회사를 떠난 다른 개발자로부터 코드를 인계 받았을 때 비슷한 문제가있었습니다. 코드가 이미 제작 중이므로 완전한 다시 쓰기가 옵션이 아닙니다. 그러나이 코드는 현재 상태에서 다루기가 힘듭니다.

1) 원본 소스 코드의 저장소를 만들었습니다.

2) 응용 프로그램의 기능을 테스트 한 테스트 코드를 만들었습니다.

3) 나는 소스 코드를 관리하기가 용이해질 때까지 기능을 제거하고 이동하고 정리하는 과정을 겪었다. 성공적인 변경 후에 소스 코드를 체크인하는 중.

-1

당신은 파일을 자동로드 할 수 있습니다. 예. myfile.php 클래스의 이름도 myfile이되어야합니다.

<?php 
function __autoload($class_name) { 
     require_once $class_name . '.php'; 
    } 

    $obj = new MyClass1(); 
    $obj2 = new MyClass2(); 
    ?> 
+0

죄송합니다, 따라갈 수 없습니다. – shaiss

+0

그건 포함 된 클래스 파일에서만 작동합니다. 다른 어떤 것도 다루지 않을 것입니다. –

+0

그래서 나는 머리부터 청소가 시작된다고 생각합니다. 그게 당신이 먼저 청소 해야하는 장소. – streetparade

관련 문제