2018년 3월 6일 화요일

[PHP예제] 021 상수 사용하기

define() 함수나 const 키워드를 이용하면 상수를 정의할 수 있다.

define() 함수에 따라 상수 정의하기

define('상수명', 값, true);

위와 같이 제3인수에 true를 지정하면 영문자의 대문자와 소문자를 구분하지 않는다.

const 키워드로 상수 정의하기

PHP 5.3 이후부터 const 키워드를 이용할 수 있다.

const 상수명 = 값;



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>상수 사용하기</title>
</head>
<body>
<div>
<?php
define('HELLO', 'Hello world!');
echo '상수: HELLO: ' . HELLO . '<br>';
echo '상수: Hello: ' . Hello . '<br>';

$result = define('GREETING', '안녕', true);
if( $result ) {
    echo '상수: GREETING: ' . GREETING . '<br>';
    echo '상수: Greeting: ' . Greeting . '<br>';        
} else {
    echo '상수 정의에 실패했습니다.' . '<br>';
}

const WORLD = 'World';
echo '상수: WORLD: ' . WORLD;
?>
</div>
</body>
</html>



define() 함수는 상수의 정의에 성공하면 true를 실패하면 false를 반환한다.

화면에 오류를 표시하기 위해서는 php.ini 파일에서 display_errors의 설정을 On으로 설정하면 된다.




2018년 3월 5일 월요일

[PHP예제] 020 환경 변수의 정보를 취득

$_SERVER 변수는 Web 서버에서 전달된 정보가 배열로 설정되어 있다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>환경 변수의 정보</title>
</head>
<body>
<div>
<?php
function h($var)
{
    if( is_array($var) ) {
        return array_map('h', $var);
    } else {
        return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
    }
}

$agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
$ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

echo '브라우저: ' . h($agent) . '<br>';
echo 'IP주소: ' . h($ip) . '<br>';
echo '참조원: ' . h($ref) . '<br>';

echo '<pre>';
var_dump(h($_SERVER));
echo '</pre>';
?>
</div>
</body>
</html>


$_SERVER 변수로 취득할 수 없는 환경 변수는 getenv() 함수를 사용하라.

[PHP예제] 017 형 변환

형 변환

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>형 변환</title>
</head>
<body>
<div>
<?php
$a = 123;
$b = '321';

echo '$a의 유형: ' . gettype($a) . '<br>';
echo '$b의 유형: ' . gettype($b) . '<br><br>';

$a = strval($a);
$b = intval($b);

echo '$a의 유형: ' . gettype($a) . '<br>';
echo '$b의 유형: ' . gettype($b) . '<br><br>';

$a = (int) $a;
$b = (string) $b;

echo '$a의 유형: ' . gettype($a) . '<br>';
echo '$b의 유형: ' . gettype($b) . '<br><br>';
?>
</div>
</body>
</html>


형 변환 목록
형 변환 설명
(int), (integer) 정수로 변환
(bool), (boolean) 논리값으로 변환
(float), (double), (real)    부동 소수점 수로 변환
(string) 문자열로 변환
(array) 배열로 변환
(object) 객체로 변환

** 주의

  • 취급할 수 있는 부동 소수점을 넘은 숫자는 무한대로 간주됨
  • 배열을 문자열로 변환하면 항상 Array가 됨

[PHP예제] 016 변수의 유형을 알아보고 싶을 때

is_*() 함수, var_dump() 함수

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>변수의 유형</title>
</head>
<body>
<div>
<?php
$a = 123;
$b = '321';

echo '$a의 유형: ' . gettype($a) . '<br>';
echo '$b의 유형: ' . gettype($b) . '<br>';

if( is_int($a) ) {
    echo '$a는 정수형입니다.';
} else {
    echo '$a는 정수형이 아닙니다.';
}

if( is_string($b) ) {
    echo '$b는 문자형입니다.';
} else {
    echo '$b는 문자형이 아닙니다.';
}

echo '<pre>';
var_dump($a);
var_dump($b);
echo '</pre>';
?>
</div>
</body>
</html>


변수의 유형을 판정하는 함수
함수명 설명
is_array() 변수가 배열인지 확인
is_bool() 변수가 논리형(boolean)인지 확인
is_float() 변수가 부동 소수점(float)인지 확인
is_int() 변수가 정수형(int)인지 확인
is_null() 변수가 무싷할 수 있는 값(null)인지 확인
is_numeric() 변수가 숫자 또는 숫자 형식의 문자열인지 확인
is_object() 변수가 객체(object)인지 확인
is_resource()      변수가 자원(resource)인지 확인
is_string() 변수가 문자열인지 확인





2018년 3월 4일 일요일

[PHP예제] 015 변수가 설정되었는지 알아보고 싶을 때

isset()는 주어진 변수가 설정되었는지 조사하고 설정되었으면 true를 되돌려준다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>변수가 설정되어 있는지 확인하기</title>
</head>
<body>
<div>
<?php
$a = 'ABC';
$b = null;
$c['a'] = 123;

if( isset($a) ) {
    echo '$a는 설정되어 있습니다.<br>';
} else {
    echo '$a는 설정되어 있지 않습니다.<br>';
}

if( isset($b) ) {
    echo '$b는 설정되어 있습니다.<br>';
} else {
    echo '$b는 설정되어 있지 않습니다.<br>';
}

if( isset($c['a']) ) {
    echo '$c[\'a\']는 설정되어 있습니다.<br>';
} else {
    echo '$c[\'a\']는 설정되어 있지 않습니다.<br>';
}

if( isset($c['b']) ) {
    echo '$c[\'b\']는 설정되어 있습니다.<br>';
} else {
    echo '$c[\'b\']는 설정되어 있지 않습니다.<br>';
}

if( isset($d) ) {
    echo '$d는 설정되어 있습니다.<br>';
} else {
    echo '$d는 설정되어 있지 않습니다.<br>';
}
?>
</div>    
</body>
</html>

null의 경우는 false를 되돌려준다.


[PHP예제] 014 here document와 Nowdoc

here document는 긴 문자열을 표시하거나 변수에 대입할 경우에 편리한 구문이다.
<<< 직후의 문자열을 끝을 나타내는 문자열로, '터미네이션 ID'라고 부른다.
이 문자열을 무엇이든지 상관없지만 일반적으로 'EOF', 'EOL', 'EOT', 'END' 등을 사용합니다.
그리고 맨 끝의 행은 들여쓰기를 위한 탭이나 공백이 포함되지 않고 최초에 정의한 터미네이션 ID와 세미콜론(;)으로만 지정해야 한다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Page Title</title>
</head>
<body>
<div>
<?php
$book = 'PHP 프로그래밍';
$text = <<<EOL
예제 문서의 변수에 문장을 대입합니다.<br>
서적명 : $book<br>
EOL;

echo $text;

echo <<<END
echo에서 직접 문장을 출력할 수도 있습니다.
<br><br>
END;

echo <<<'END'
Nowdoc 구문입니다.<br>
터미네이션 ID를 작은따옴표로 둘러싸고 있는 것에 주의해 주세요.<br>
아래에 기술한 변수는 처리되지 않습니다.<br>
서적명 : $book<br>
END;
?>
</div>    
</body>
</html>

Nowdoc 구문에 대해
PHP5.3부터 'Nowdoc 구문'이 추가 되었다. 이 구문은 기본적으로 here document와 같지만, 변수가 전개되지 않는 점이 다르다.



[PHP예제] 013 변수와 문자열을 출력하고 싶을 때

문자열을 홑따옴표(')나 쌍따옴표(")로 둘러싸고, 변수는 '$변수명'과 같이 달러기호($)를 붙인다. 출력에는 echo문을 사용한다.

013.php

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>변수와 문자열의 출력</title>
</head>
<body>
    <div>
<?
$name = 'PHP 프로그래밍';
$Name = 'CodeIgniter 철저입문';

echo '서적명: ' . $name . '<br>';
echo "서적명: {$Name}\n<br>";
echo '서적명: {$Name}\n<br>';

$format = '서적명: %s, %s<br>';
echo sprintf($format, $name, $Name);
?>
    </div>
</body>
</html>

위와 같이 파일을 작성하고 실행한 결과는 다음과 같다.