웹 프로그래밍

[PHP] 1장 PHP 훑어보기(1)

토픽 웹 프로그래밍 > PHP

PHP 기본

PHP 태그 스타일

  • XML 스타일
    <?php echo 'Hello'; ?>
    항상 지원되는 방식. 일반적으로 권장되는 스타일.
     
  • 짧은 스타일
    <? echo 'Hello'; ?>
    기본적으로 지원하지 않는 환경이 많음.
     
  • 스크립트 스타일
    <script language='php'> echo 'Hello' </script>
    JavaScript, VBScript 스타일로 HTML 편집기에서 다른 태그 스타일을 사용할 수 없을 경우에 사용
     
  • ASP 스타일
    <% echo 'Hello'; %>
    ASP나 ASP.NET 스타일로 config 파일에서 asp_tags를 활성화하면 사용할 수 있음.
    ASP편집기를 쓰는 것이 아닌 이상 굳이 사용할 필요는 없다. 
만약 php의 변수 하나만 출력하고 싶다면 아래와 같이 사용할 수도 있다.
<?=$var?>
여기서 $var은 php의 변수라고 생각하면 된다. 변수와 관련해서는 나중에 설명한다. 

 

echo와 주석처리

echo는 C언어의 printf처럼 문자열을 출력하는 역할을 한다.

/* 이 부분은 주석입니다.
여러 줄을 주석처리 할 수 있습니다.*/
echo '<p>Hello World!</p>'; // ''방식
echo "<p>Hello World!</p>"; // ""방식
echo '<p>Hello '.'World</p>' // 문자열 연결

위와 같이 ' ' 또는 " "로 감싸주면 된다. ''로 감싸는 경우 ''내부에 있는 문자열을 그대로 출력하며, ""로 감싸는 경우 ""내부에서 php변수를 사용할 수 있다.

모든 php문은 마지막에 ;을 찍어 문장의 끝을 나타낸다.
주석은 위 코드에서 보듯이 여러 줄인 경우 /**/로 감싸면 되고, 한 줄인 경우 간단히 //로 처리할 수 있다.
서로 다른 문자열(또는 문자열과 변수)을 연결할 필요가 있는 경우 연산자 .을 이용하여 결합해 주면 된다.

그리고 자주 사용하진 않지만 echo에 엔터키를 포함하여 입력하고 싶은 경우 아래와 같이 사용할 수도 있다.
(PHP 4에서 추가됨)

echo <<< theEnd
line1
line2
line3
theEnd

theEnd는 임의로 지정할 수 있다. 위와 같이 입력하게 되면 theEnd라는 문자를 만날 때까지 엔터키를 포함한 문자열을 입력할 수 있다.

만약 문자열 내에서 따옴표를 사용하고 싶으면 두 가지 방법이 있다.
  1. 서로 다른 따옴표를 쓰는 방법 : 작은 따옴표를 쓰고 싶다면 큰 따옴표로 감싸고 큰 따옴표를 쓰고 싶으면 작은 따옴표로 감싼다.
  2. 이스케이프 시키는 방법 : 따옴표 앞에 역슬래시(\)를 추가하여 이스케이핑시켜 사용한다.  

 

PHP 변수

정수형
실수형
문자열
불리언
배열
객체
NULL
resource - 외부 자원(특히 데이터베이스 연결)

php에서 변수는 $기호로 시작하게 된다. 따로 자료형을 선언할 필요는 없으며 그냥 변수를 선언하거나 선언과 동시에 초기화 해주면 알아서 적절한 자료형이 결정된다.

  1. php는 형 강도가 매우 약한 언어이다.
  2. 형 변환은 C언어 처럼 $a=(double)$b; 와 같은 형태로 사용한다.로
  3. 가변 변수 : 변수의 이름을 새로운 변수에 저장할 수 있으며 $$을 통해서 그 값에 접근, 제어할 수 있다.
    $a = 0;
    $var = 'a'; // $a는 $$var로 사용할 수 있게 된다.
    $$var = 5; // $a = 5;와 같다.
    echo $a; // 5
    /*  $var의 값은 문자 a가 된다.
        그렇다면 $$var는??? 신기하게도 php에서는
        $$var를 $a로 인식할 수 있게 된다. */
  4. 상수
    define('PI', 3.14); // 상수의 정의
    echo PI // 상수는 $를 붙일 필요가 없다.

 

변수의 범위

수퍼글로벌 변수 - 스크립트 전역(함수 내외부)
상수 - 스크립트 전역
전역 변수 - 함수 외부
지역 변수(함수 안에서 정의된 변수) - 함수 내부
함수 안에서 전역으로 정의된 변수 - 함수 내부(단, 값이 유지되어 다음에 사용할 수 있음)

수퍼글로벌 변수 리스트

$GLOBALS        // global 키워드 처럼 함수 안에서 글로벌 변수에 접근 가능
                // $GLOBALS['val']
$_SERVER        // 서버 환경 변수의 배열

$_GET, $_POST   // 폼에서 get 또는 post 메소드로 전달된 값의 배열
$_COOKIE, $_SESSION // 쿠키와 세션 변수의 배열
$_FILES         // 파일 업로드와 관련된 변수의 배열
$_REQUEST       // 사용자가 입력한 변수의 배열
                // $_GET, $_POST, $_COOKIE를 포함
            
$_ENV           // 환경 변수의 배열

 

연산자

php의 연산자는 대부분 일반적으로 사용하는 프로그래밍 언어의 연산자들과 유사한 점이 많으므로 모두 알만한 내용은 생략하였다.(+,-,*,/,% 등)(산술연산자, 문자열 연산자, 대입 연산자, 복합 대입 연산자)
문자열 연산자의 경우 PHP 기본->echo와 주석처리 부분에서 설명하였다.
또한 앞으로 설명할 부분도 다른 언어와 크게 다른 부분이 없으므로 짧게 짧게 설명하였다.

php도 복합 대입 연산자가 적용이 가능하며, 문자열 연산자도 복합 대입 연산자 사용이 가능하다. 아래 두 문장은 서로 같다.

$a .= $b;
$a = $a . $b;

 

참조연산자

$a = 5;
$b = $a;
$a = 7; // $b는 바뀌지 않는다.(일반적인 예)

$a = 5;
$b = &$a; // 참조연산자
$a = 7; // $a, $b 모두 7

unset($a); // $a값이 없어진다. $b=7은 유지된다.

참조연산자는 포인터라기보다는 별명에 가깝다.

 

비교연산자

연산자 이름 사용법
== 등위 $a == $b
=== 동일 $a === $b
!= 같지 않다 $a != $b
!== 동일하지 않다 $a !== $b
<> 같지 않다(!=동일) $a <> $b

>, <, >=, <= 는 생략 

등위와 동일의 의미가 헷갈릴 수 있는데, 등위는 값만을 비교하고 동일은 자료형과 값을 모두 비교한다. 대표적인 예로 PHP에서 0과 false는 같은 값으로 취급 받는다. 하지만 0은 숫자 0이고 false는 boolean형의 거짓이라는 표현이다. 이를 구분하기 위해서는 반드시 동일의 연산자를 사용해야 한다. 

 

논리 연산자

NOT : !
AND : &&, and
OR : ||, or
XOR : xor

&&와 and, ||와 or는 기능은 같지만 우선순위는 &&, ||가 더 높다.

 

비트 연산자

&, |, ~, ^, <<, >>
and, or, not, xor, Lshift, Rshift

 

오류 억제 연산자

@ : 오류 억제 연산자. 어떠한 표현식 앞에서도 쓸 수 있다.

$a = @(57/0); // 0으로 나누기

단, 이런 방식으로 억제한다면 오류를 처리하는 코드를 작성해야 한다.

만약 php.ini에서 track_errors를 설정해놓았다면 오류 메시지를 전역 변수 $php_errormsg에 저장한다.

 

실행 연산자

서버의 커맨드라인에서 실행하고 싶은 경우 ` ` 사이에 입력한다.

$out = `ls -al`;
echo '<pre>'.$out.'</pre>';

19장 파일 시스템과 서버와의 연동에서 사용한다.

 

배열 연산자

연산자 이름 사용법
+ 합집합($a, $b의 모든 값을 반환) $a + $b
== 등위($a, $b가 같은 요소를 가지고 있으면 true) $a == $b
=== 동일($a, $b가 같은 순서로 같은 요소를 가지고 있으면 true) $a === $b
!= 같지 않다($a, $b가 같지 않으면 true) $a != $b
!== 동일하지 않다($a, $b가 동일하지 않으면 true) $a !== $b
<> 같지 않다(!=동일) $a <> $b

 

형 연산자

instanceof : 특정 클래스의 객체인지 알아볼 때 사용한다. (6장 객체지향 프로그램)

 

(참고)
number_format($number, 3); // $number를 소숫점 3째 자리에서 반올림한다(2째 자리까지 표현)

댓글

댓글 본문
  1. ㅉㅈ
    잘 보고 가네요