Bitaholic

PHP 훑어보기 본문

Computer/PHP

PHP 훑어보기

Bitaholic 2006. 9. 9. 21:16

폼변수 다루기

  폼변수

    PHP 스크립트에서 폼 필드 값은 PHP 변수처럼 접근 할수 있다.

    3가지 방법이 있다.

      ex)

           $tireqty                                  //짦은 스타일

           $_POST['tireqty']                   // 중간 스타일

           $HTTP_POST_VARS['tireqty']  // 긴 스타일

     1. 짧은 스타일 : register_globals를 활성화 시켜야 쓸수 있다. (비추천)

                             지역변수와 혼란을 야기 한다. 4.2.0이후로 비활성화 되어있다. 

     2. 중간 스타일 : 추천되는 방식(4.1.0이후에서만 가능)

     3. 긴 스타일 : 지양되어 왔다. 모든 버전에서 사용할수 있어 이식성은 높다.

                         성능에 좋지 않다. registre_long_arays로 비활성화 할수 있다.

 

식별자(Identifier)

dfe

  - 식별자는 변수의 이름을 말한다.

  - 길이 제한은 없으며 문자,숫자,'_', '$'로 만들 수 있다.

  - '$'는 가변변수때문에 조심해서 사용해야 한다.

  -숫자는 매 앞에 올수 없다.

  - 대소문자를 구분한다.

 

변수형

 : 변수의 형(type)은 저장된 데이터의 종류에 따라 정해진다.

    기본데이터형

      ■ Integer : 모든 숫자

      ■ Float

     ■ String

      ■ Boolean

      ■ Array

      ■ Object

 

      이 외에 NULL형과 resource형(외부자원 ex DB연결)이 있다.

 

형 강도(Type Strength)

 PHP는 형 강도가 매우 약한다. 변수에 저장된 값에 따라 형이 결정된다.

      $a = 0;

      $a = 0.00;

        // $a는 처음엔 정수형이였다가 실수형으로 바뀐다.

      $a = 'Hello';  // 이것도 가능하다 이제 $a는 문자열이다

 

가변 변수(variable varialbes)

 :  가변변수를 사용하면 변수의 이름을 동적으로 바꿀수있다.

   ex)

    $varname = 'b';

    $$varname = 5;

 

   위는 $b = 5 와 하는 것과 동일하다.

   

 

상수

   - 상수는define 함수를 사용하여 상수를 정의한다.

     ex)

         define('TIREPRICE' , 100);

         define('OILPRICE', 10);

         define('SPARKPRICE', 4);  

   - 상수의 사용

      : 변수는 $를 붙이지만상수는 상수의이름만 적어주면 된다.

     ex)

       echo TIREPRICE;

 

변수의 범위(scope)6개의 범위를 가지고 있다.

 -수퍼글로벌 변수는 스크립트 전역에서 사용할 수 있다.

 - 한번 선언된상수는 스크립트 전역에서 사용할 수 있다. 즉 함수의 안과 밖 모두에서 사용할 수 있다.

 -전역변수는 스크립트 내에서 정의된 변수로 스크립트 내에서 사용할 수 있지만, 함수 안에서는 사용할 수 없다.  

 -함수 안에서 정의된 변수는 함수 내에서만 사용할 수 있다.

 -함수 안에서 전역으로 정의된 변수는 함수 밖에서는 사용할 수 없지만 매 사용 시마다 값이 저장되어 다음에 사용할 수 있다 ???

 -함수 안에서 사용된 변수는 함수가 끝나면 삭제된다.

 

수퍼글로벌 전체 리스트

  - $GLOBALS

  - $_SERVER

  - $_GET

  - $_POST

  - $COOKIES

  - $_FILES

  - $_ENV

  - $_REQUEST

  - $_SESSION

 

 

Operation(연산자)

 대부분 C, Java랑 비슷하고 틀린부분만 정리

 -문자열 연산자   '.' : 문자열을 앞뒤로 붙여서 새로운 문자열을 만든다.

   ex)

      $a = "Bob's";

      $b = 'Auto Parts';

      $result = $a.$b;

 

    결과 $result에 저장된 값은 "Bob's Auto Parts"이다.

  -산술 연산자

    : 산술 연산자의 operand(피연산자)는 정수와 실수형으로만 쓰일 수 있다. 만약 문자열로 산술연산을 시도한면 문자열을 숫자로 바꾸어서 실행한다. 문자열에 "e"나 "E"가 들어있다면 실수형으로 변화 한다. 그 외에는 정수형으로 변환. PHP는 문자열 처음에서 숫자를 찾아서 그것을 값으로 인식하는데, 만약에 문자열에 숫자가 없다면 문자열의 값은 0이 된다.

 

  - 참조 연산자(Reference)

    : C의 &연산자와 같음..

     ex) $a = 5

           $b = $a; --> $a, $b 서로 다른 메모리 영역을 가진다.

 

           $a = 5;

           $b = &a; 

           &b = 7    // $a, $b 서로 같은 메모리영역을 가진다 즉 $a, $b가 7

 

            unset($a)  : 서로의 참조를 다르게 한다 (관계를 떼어놓을 수 있다)

 

 - 비교연산자(Comparison Operatiors)

     identical operator (===): 두 피연산자가 값이 같고 같은형일 때만 true를 리턴한다.

      Not Identical (!==)  : != 와는 다르다

      Not Equal (<>) : 같지 않다. (!=) 와 같이 동일한 의미로 쓰인다.

 - 에러 억제 연산자(error suppression operator) : @

     :'@'은어떠한 표현식에도 쓸수 있다.

     ex) $a = @(57/0)

     '@'가 없다면 위 문장은 "0으로 나누기"에 의한 에러가 발생하지만'@'를 앞에 써주어서 에러는 무시하고 넘어간다. 만약 이런 방식으로 억제한다면 에러를 처리하는 코드를 작성해야 한다. 만약 PHP에서 track_error를 설정해 놓았다면 에러메시지를 전역변수인 $PHP_erromsg에 저장한다.

 

 - 실행 연산자(execution operation)

  :  '`' 와 '`'로 이루어진 한 쌍의 연산자로 '`'는 홑따옴표(')와는 다른 키보드 ~아래에 있다.

    PHP에서 서버의 커맨드 라인에서 실행하고 싶은 것이 있다면 `` 사이에 명령어를 쓰면된다.

    그러면 ``의결과값이 표현식의 리턴값이 된다.

    EX)

       유닉스 환경

         @out = `ls -la`;

         echo '<pre>'.$out.'</pre>';

      그러면 시 디렉토리의 파일 리스트가 보이게 된다.

 

     

 - 배열 연산자

    +       |    $a + $b    |  $a와 $b가 가지고 있는 모든값을 반환한다(합집합)

   ==       : $a, $b가 같은 요소를 가지고 있으면 true

   ===     | $a, $b가 같은 요소를 같은 순서로 가지고 있으면 true

   !=

   <>

   !==

 

변수와 관련된 함수

 -변수의 데이터 형을 검사하고 설정하기

  

      string gettype(mixed var);

          : 'boolean", "integer", "double", "string", "array", "object", "resource", 혹은 NULL을 반환한다. 표준 데이터 형이 아니면 "unknown"을 반환

 

       bool settype(mixed var, string type);

 

        ■ is_array()

        ■ is_double(), is_float(), is_real() (모두 같은 함수)

        ■ is_long(), is_int(), is_integer() (모두 같은 함수)

        ■ is_string()

        ■ is_object()

        ■ is_null()

        ■ is_scalar() - 변수가 스칼라 변수인지 확인한다. 즉 정수형, 불리어형, 문자열이나 실수형인지 확인한다.

        ■ is_numeric() - 변수가 숫자나 혹은 숫자 문자열인지 확인한다.

        ■ is_callable() - 변수에 저장된 값이 호출할 수 있는 함수의 이름인지 확인한다.

 

 - 변수 상태 검사

   boolean isset(mixed var);

      : 이 함수는 변수의 이름을 인자로 받아서 만약 이 변수가 존재한다면 true를 반환한다.

       , 로 연결된 변수들을 주면 모든 변수가 존재해야 true를 반환

    boolean unset(mixed var);

     : 인자로 받은 변수의존재 자체를 없애고 true를 반환한다.

   empty(mixed var);

     : 변수가 존재하고, 비어 있지 않으며, 0이 아닌값을 가지고 있다면 true를 리턴

    

  - 변수형 변환

    int intval(mixed var[, int base]);  base :진수 (10, 2, 16)

    float floatval(mixed var);

    string strval(mixed var);

      

== 제어문 ==

  대부분 C와 비슷하지만, 틀린점만 요약하면

  

   1.  else if    -->  elseif  와 같이 붙여 쓸 수도 있다.

   2. 루프를 빠져나갈때 'continue', 'break' 이외에 'exit' 라는 제어문이 있다.

      'exit' : 루프를빠져나가 PHP 스크립트를 완전히 끝낸다.

   3. 대체 제어 구조

       { } 로 구역을 정하는 것이 아니라

         '{' 대신에 ':' 를 쓰고,

         '}' 대신에 사용한 제어구조에 따라, endif, endswitch, endwhile, endfor, endforeach를 쓸수있다.

      ex)

       if( $totalqty == 0 )

       {

            echo 'You did not ... ';

            exit;

       }

         를 아래와 같이 쓸수 있다.

       if( $totalqty == 0 ) :

            echo 'You did not ... ';

            exit;

       endif

    4. declare

      declare (directive)

      {

            // block

      }

        이 구조는 코드 블록에서 실행 지침(execution directive)를 설정하기 위해 사용된다.

        단 하나의 실행 지침인 tricks 만이 구현되어있는데 tricks=n이라는 방식으로 지침을 삽입할 수 있다. 코드 블록내에 있는 특정 함수 중 n개의 코드 행을 실행 시킬 수 있어 디버깅에 매우 유용한다.

 

 

       

         

      

 

 

 

 

출처 : PHP and MySQL Web Development 3rd Edition (정보문화사)

Comments