$var = 0; function myfunc($myvar) { $myvar = 1; } echo "The value of the variable is: $var이 코드는 비록 동작은 하나 적절히 기능을 하기 위해서는 PHP 설정 지시자에 의존한다. 예를 들어, 만약 PHP 설정 지시자 short_tags가 비활성화 되었다면 무슨 일이 생길까? 이 코드는 PHP 블록을 시작하기 위해
"; myfunc(&$var); echo "The value of the variable is: $var
"; ?>
function myfunc(&$myvar) { $myvar = 1; }팁 2: 곧바로 값을 리턴하는 함수는 사용하지 마라.
10) ? strlen($mystring) - 10 : 0)), strtoupper(substr($mystring, rand(0,strlen($mystring))))) == 0) ? true : false; ?>이 같은 코드도 물론 동작은 하지만 이 코드가 무엇을 하는지 쉽게 말할 수 있는가? 코드를 실제로 작성하지 않은 사람이라면 내용을 파악하기가 더 어려울 것이다. 이러한 요소도 또한 스크립트를 작성하는 방법에 영향을 줄 것이다. 아래에 더 쉽게 읽을 수 있는 코드가 있다.
10) ? $str_len - 10 : 0; $start_rand = rand(0, $str_len); $substr_rand = substr($mystring, $start_rand); $substr_base = substr($mystring, $start_pos); $substr_rand = strtoupper($substr_rand); $substr_base = strtoupper($substr_base); if(strcmp($substr_base, $substr_rand) == 0) { $my_variable = true; } else { $my_variable = false; } ?>이제 코드가 무엇을 의미하는지 알 수 있겠는가? 가독성을 위해서는 기꺼이 몇 라인 더 작성하는 수고를 아끼지 않아야 한다. 언젠가는 보상을 받게 될 것이다^^. 만약 곧바로 리턴된 값을 사용해야만 한다면, 모든 함수들 중에 파라미터의 혼합된 수가 3개 이하일 경우에는 대부분의 경우에 받아질 수는 있다.
이 경우에 단지 두개의 파라미터를 사용하여 substr() 함수를 호출하고 있다. 파라미터 중에 하나는 단지 한 개의 파라미터를 받는 strtoupper() 함수이다. 이 구문에는 모두 세개의 파라미터만이 있기 때문에, 원한다면 한라인으로 적절하게 사용할 수 있다.
10) ? strlen($myvar) - 10 : 0); ?>팁 3: 적절하지 않는 배열 문법을 사용하지 마라.
"Your index was foo", "bar"=>"Your index was bar"); echo $myarray[bar]; ?>브라우저에 "Your index was bar"를 출력할 것이다. 그러나 다음과 같은 거의 동일한 스크립트는 원하는 대로 동작하지 않는다.
"Your index was foo", "bar"=>"Your index was bar"); echo $myarray[bar]; ?>기대했던 출력과는 달리 이 스크립트는 브라우저에 "Your index was foo"를 출력할 것이다. 이 경우에 상수 bar를 foo로 정의했기 때문에 PHP는 bar의 각 인스턴스를 문자열 foo로 대체한다. 여기서 사용된 배열 인덱스가 명시적으로 스트링이라고 명시되지 않았으므로 자동적으로 foo라는 값으로 대체된다. 그래서 echo 문은 상수(스트링이 아님) bar에 의해 정의된 배열 인덱스에 저장된 값을 출력한다. 이러한 혼돈을 방지하기 위해서는 아래에 보여진 것 처럼 배열 인덱스("bar")를 정의하는 것이 중요하다.
echo $myarray["bar"];작성한 스크립트에 상수가 정의되지 않았을 경우에라도 차기 PHP 버전에서 새로운 상수가 소개되지 않으리라는 보증은 없으며, 이것은 바람직하지 않는 결과를 나을 수도 있다. 그러나 이러한 규칙에도 한가지 예외는 있다. 예를 들어 스트링 안에서 배열 인덱스를 참조할 때 아미 아래와 같은 문법에 익숙할 것이다.
echo "My Value {$myarray["bar"]}";이 경우에는 배역 $myarray안에 있는 bar 키값과 관련된 값을 출력할 것이다. 이 배열이 스트링 내부에 있기 때문에 이 구문은 아래와 같이 간단하게 표현할 수 있다.
echo "My Value $myarray[bar]";PHP 코드를 계속 사용하려면 위에서 언급한 두 예제를 잘 활용하기 바란다. 언젠가는 차이점을 알 수 있을 것이다.
최신 콘텐츠