웹마스터 팁

음. PHP에 입문하시는 분들을 위해 도움이 될 만한 부분을 적어봅니다.

저도 프로그래밍을 하지만 (잘못합니다 -_-;;) 이런 부분을 먼저 해야할 것 같아서요....;;

프로그래밍을 하시기 위해서는 먼저, 습관이 들어야 될게 있는게 있습니다.

첫번째가 변수명, 함수명에 대한 습관이구요

두번째가 5분 생각하고 1분 코딩하는 습관이구요

세번째가 항상 문법에 맞도록 코딩하는 습관이 중요합니다.

[변수/함수]
변수/함수명은 아주 중요합니다. 네이밍이 잘되어있어야지 프로그램 로직이 잘 파악됩니다.

크게 2가지로 나뉘는데요 정확한 용어는 생략합니다. ^^

2가지는 _(언더바형) 과 isAdmin 과 같은 낙타형으로 나뉩니다. 네이밍은 만약 이 변수가 회원의 정보면

언더바형 : $member_info
낙타형 : $memberInfo

이렇게 됩니다. 이것이 왜 중요한지 먼저 생각하자면 PHP 도 5부터 class에 public, private 와 같은 scope 개념이 적용이 됩니다.

다르게 말하자면

php4버전의 코딩)
class zeroClass
{
     var $czero = null;

     function zeroClass()
     {
            $this -> czero = 'abc';
     }

     function toString()
     {
            return $this -> czero;
      }
}

$zero = new zeroClass();
$testVar = $zero -> toString();
echo $testVar;

이 부분이 php5에서는
class zeroClass
{
       private static $czero = null;

       public function __construct()
       {
             self::$czero = 'abc';
        }

        public function __toString()
        {
              return self::$czero;
        }
}

$zero = new zeroClass();
echo $zero;

이런식으로 바뀌는 겁니다. 물론 private static은 상속땜시 (extends 를 말함) 보호를 하는 것이구요 일반적이면 public $zero 로 쓰시면 됩니다. 외부에서 접근가능한지 아닌지로 생각하시면 쉽습니다.

이것이 변수네이밍과 무슨 상관이 있냐!!! 라고 말하실 분도 계실 겁니다.

허나, 자신만의 규약을 만드시면 소스를 해석하실때 엄청 편합니다.

예를 들자면, 저같은 경우는 이렇게 합니다.
함수 : public은 낙타형으로 private는 앞에 _낙타형
변수 : public과 중요인자는 낙타형, 임시적인 의미를 가지는 것은 _낙타형이거나 언더바형

예를 들자면.

class zeroClass extends yamiClass
{
      private static $conn;
      private static $answer = null;
      private static $husband_status = null;
      private static $wife_status = null;

      public function __construct()
      {
            parent::__construct();
      }

      public function __destruct()      {      parent::__destruct();      }

      public function callHusband()
      {
            if (is_null(self::$husband_status))
                   self::$husband_status = self::_changeValue('busy');

            return;
      }

      private function _changeValue($input)
      {
            return ($input != '') ? $input:null;
      }
}

대충 저런식으로요.

저런 자신만의 습관을 가지도록 노력하시면 더더욱 프로그램이 잘될 것 같습니다.^^;

또한 문법에 맞게 하는 것도 중요합니다.

php를 하시는 분들중에 잘못된 문법을 쓰시는 분들이 많습니다.

바로 그부분은 query를 변수에 넣을때 사용하시는 것인데요...

$query = "select count(*) from TBL where no='$no'";

mysql은 문법을 그다지 중요하게 안따져도 되지만, 정석적인 방법으로는

$query = "select count(*) from TBL where no=$no";

가 되야합니다. no컬럼은 integer형이므로 '' 가 있으면 안됩니다.

또한 PHP는 string parsing을 할때 "" 가 있으면 ""안의 $값을 다 변환하므로 가급적 다음과 같이 적어주시는 것이 낫습니다.

$query = 'select count(*) from TBL where no='.$no;

[여기서의 TIP]
많은 분들이 echo 를 쓰십니다.
허나 PHP는 echo 만 있는게 아닙니다. 각기 미묘한 차이가 있지만.
문자열 출력에는 print와 printf, sprintf 가 있습니다.

예)
$test = '12345';

echo ("내가 본 test는 $test이다"); => 흔히 쓰는 echo, 정석은 echo ("내가 본 test는 ${test}이다"); <-- echo 안에서는 {}로 변수 보호를 해줘야 합니다.
print는 echo와 비슷하지만 여러줄을 쓸경우 다릅니다. print는 그냥 pass

중요한 부분은 여기서 나올 printf, 와 sprintf입니다.

printf("내가 본 test는 %s이다",$test); -> 상위의 echo 결과와 똑같습니다.
$return = sprintf("내가 본 test는 %s이다",$test); -> 결과를 return변수안에 집어넣었습니다.

이 두줄을 보면 생각나는게 있지 않나요?

바로!! 쿼리문 작성할때나 문장안에 여러개 변수쓸때 응용할 부분입니다.
$query = sprintf("SELECT COUNT(*) FROM TBL WHERE no=%d",$no);

%s -> string, %d -> decimal 을 의미합니다. (decimal이 맞던가?) 암튼, C문법과 비슷하게 쓰실수 있습니다.

긴 쿼리문을 적을경우
$query = sprintf("SELECT %s FROM TBL WHERE no=%d AND fld='%s' AND fld2='%s'","*",$no,$fld1,$fld2);

유용합니다.

[함수의 팁]
함수 안에서 &를 사용하시면 더욱 편리합니다.

function testFunc($arg, &$arg1)
{
      if ($arg != '')
            $arg1 = $arg;

      return;
}

testFunc("123",$ret);

echo $ret;

하시면 흔히 결과값 리턴받을 경우 $aa = function(11); 이런 방식보다 편리합니다.

너무 두서없이 적었나 봅니다...-_-;;

기회가 되면, 정리를 좀 하면서 적겠습니다.
제목 글쓴이 날짜
Javascript + 플래시 칼라피커 [6] 행복한고니 2004.10.08
체크박스를 이미지로 사용하기 [7] 행복한고니 2004.10.10
배열 스크립트 종합선물세트 행복한고니 2004.10.12
멀티 파일다운로드 꼼수 (새창버전) [1] 행복한고니 2004.10.14
XP2인지 체크하여 XP2일때는 팝업허용하라는 메시지 뛰워주기 [3] 아돌 2004.10.19
모든 이미지, 텍스트 링크에 점선 없애기 [5] 이강민 2004.10.25
JavaScript 구문강조 효과내기 파우링 2004.10.28
행복한고니님의 체크박스를 이미지로 사용하기를 보고... 체크박스옆에 텍스트 부치기 [2] beMax 2004.10.29
ActiveX 멀티파일업로더 입니다. [9] by風 2004.11.01
홈페이지 나갈때 새창띄우기 [2] piasol 2004.11.07
(수정)배경음악,연월일,시간, 코멘트 셋트.(AM,PM==>오전,오후 순,한국식으로 ...) [4] 민피디 2004.11.10
ActiveX 플래시 이미지캡쳐 컨트롤 iFlower [1] 덴디 2004.11.15
iFlower 윈도우리스 플래시 ActiveX 컨트롤 덴디 2004.11.16
자바스크립트 암호화 [5] 손상모 2004.11.18
로딩중인 페이지에 효과넣기 [4] LUFFY 2004.11.20
이미지 를 브라우져에서 내맘데로 옮겨두기 [8] piasol 2004.12.03
이제 미디어플레이어는 가라? 곰플레이어로 실시간으로 감상하자. [13] ⓣing★™ 2004.12.05
홈페이지를 풀스크린으로 띄우자 - 올플래시로 보이는군요. [21] Multi_Taeji 2004.12.10
마우스를 대면 이미지가 바뀐다. 롤오버 이미지 [3] 하진 2004.12.19
개판 오분전 빙고 [2] 미친개 2004.12.30