2011-09-14 4 views
2

나는 다음과 같은 구조를 가지고 스크립트가 있습니다PHP 사용자 정의 함수 영역/좋은 연습

<?php 
    if(a == b){ 

     function some_function_name(){ 
      // do something here 
     } 

     if(c == d){ 
      some_function_name(); 
     } 
    } 
?> 

내가 (그 some_function_name 말하는 오류 메시지를); 존재하지 않는다.

내가 뭘 잘못하고 좋은 연습입니까?

필자는 여러 단계를 거쳐야하기 때문에 함수를 만들고 싶습니다. 동일한 코드를 반복해서 복사/붙여 넣기하지 않아도됩니다.

+1

원하는 모든 기능을 만듭니다. 조건부로 만들지 마십시오. 그들은 존재하거나 그렇지 않습니다. 그것을 우스꽝스럽게 만들지 마라. –

답변

4

조건부 if() 문 내에서 함수를 정의하지 마십시오. 먼저 함수를 파일의 맨 위에 정의하고 필요할 때 호출하십시오.

5

if 문에서 함수를 선언 할 수 없습니다. 당신이 기능에 투입 할 단계 무리가있는 경우

<?php 
    function some_function_name() { 
     // do something here 
    } 

    if(a == b && c == d) { 
     some_function_name(); 
    } 
?> 
1

, 당신은 if 문, 바람직 시작 또는 파일의 끝에서 외부 함수를 정의해야한다, 또는 :

이 작업을 수행 할 수 어쩌면 별도의 파일로 구성 될 수도 있습니다.

1

이 기능이 여러 위치에서 사용되는 워크 플로의 정당한 부분 인 경우 최상위 기능 (또는 해당되는 경우 클래스 방법)으로 설정하십시오.

$func = function() { 
    // do something here 
} 

if(c == d){ 
    // you can call it like this, but read the above paragraph 
    $func(); 
} 
: 당신이 함수를 만들려는 (상대적으로 드문) 경우

콜백으로 전달하고,이 기능의 행동이 주로 변수의 값에 의해 결정하는 것입니다, 당신은 anonymous function를 정의 할 수 있습니다

익명 함수를 사용하려면 PHP> = 5.3; 이전 버전을 사용하는 경우 create_function과 동일한 결과를 얻을 수 있지만, 문제가되는 경우는 드물다.

1

사실, if 블록 외부에서 함수를 정의하지 않는 이유는 없습니다. 이 접근법은 오류가 발생하기 쉽습니다.

some_function_name()이 첫 번째 if 블록의 범위에 바인딩되어 있기 때문에 오류가 발생합니다.

필자는 여러 단계를 거쳐야하기 때문에 여러 코드를 반복해서 복사/붙여 넣기하지 않아도되기 때문에 함수를 만들고 싶습니다.

복사해서 붙여 넣기하면 안됩니다! 그것이 바로 기능입니다. 함수를 만들고 원하는만큼 다시 사용할 수 있습니다.