Raspberry Pi_Kor_24.4.3 PHP 문법 요약


Published Book on Amazon


All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1
All of IOT Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2


출판된 한글판 도서


최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상)
최신 라즈베리파이(Raspberry Pi)로 시작하는 사물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하)


Original Book Contents


24.4.3  PHP 문법 요약

 

web 페이지에 정적인 HTML tag만 있으면, 해당 페이지는 항상 동일한 내용을 보여줄 수 밖에 없다. 하지만 PHP를 이용해서 이러한 HTML의 내용에 변화를 주게 되면, 해당 페이지는 새로이 변경된 내용을 보여 주게 될 것이다. 이렇게 PHP는 정적인 HTML 페이지의 내용을 동적으로 바꿔주는 역할을 한다. 따라서 정적인 HTML의 내부에서 요청한 상황에 따라 새로운 HMTL을 만들어서, 기존의 정적 HTML tag와 통합되어서 완전한 하나의 페이지를 구성하는 HTML 문서가 된다.

 

PHP 문법에 대한 추가적인 참고사항은 다음을 참고하기 바란다.

    http://php.net/docs.php

    http://www.w3schools.com/php/default.asp

 

24.4.3.1    PHP 기본 구조

 

PHP <?php  ?> tag 형식이나 <script language="php"> </script>형식을 사용하여 일반 HTML tag와 구분한다. 어떤 것을 사용해도 무방하다.  

 

다음은 <?php  ?> tag를 사용한 경우이다

 

<!DOCTYPE html>

<html>

<body>

      <?php

          php-statement-1  ;

           php-statement-2  ;

      ?>

</body>

</html>

 


 

다음은 <script language="php">  </script> tag를 사용한 경우이다.

 

<!DOCTYPE html>

<html>

<body>

      <script language="php">

          php-statement-1  ;

           php-statement-2  ;

      </script>

</body>

</html>

 

PHP script를 포함한 문서는 일반 HTML 문서와 구분하여 PHP 파일에 저장한다. PHP 파일의 기본 파일 확장명은 ".php" 이다

 

[사용 Example]

<!DOCTYPE html>
<html>
<body>
           <h1>My first PHP page</h1>
           <?php

                       echo "Hello World!";         
           ?>
</body>
</html>

 

<?php echo 'if you want to serve PHP code in XHTML or XML documents, use these tags'; ?>

 

<script language="php">

   echo 'some editors (like FrontPage) don't like processing instructions within these tags';

</script>

 

 


 

24.4.3.2    PHP 문장(statement) 규칙

 

   문장 종료 및 문장 block 

 

    모든 PHP 문장은 semi-colon(;)으로 종료한다.

    여러 문장을 하나의 단위로 처리하기 위해서 묶을 때는 중괄호 {  }을 사용한다.

 

 

   HTML PHP script

 

    PHP 파일은 보통 HTML 태그들과 PHP 스크립트를 동시에 포함할 수 있다.

    PHP 스크립트는 문서의 어디에나 위치할 수 있으며, 한 문서에서 여러 번 사용할 수 있다.

    PHP 스크립트는 자체적으로 완전한 하나의 HTML 문서를 만들어 낼 수 있고, HTML tag의 일부 문장을 만드는데 사용될 수도 있다.   

    PHP에서 closing tag "?>"를 만나면, 다음 내용은 어떤 값이든지 그대로 출력하는데, 다음 opening tag를 만날 때까지 계속한다.

    closing tag "?>" PHP 조건문의 중간에 있으면, 조건문의 조건식 결과가 "True" 또는 "False"인지를 결정하고, 조건문에서 지시한 조건에 따라서 출력 여부를 결정한다.

 

[사용 Example]

다음은 조건문과 연관된 php script의 사례이다.

 

<?php if ($expression == true): ?>

  This will show if the expression is true.

<?php else: ?>

  Otherwise this will show.

<?php endif; ?>

 

위 예에서 PHP interpreter는 조건문의 조건이 충족되지 않는 부분에 있는 문장들은 그것이 비록 PHP opening tagclosing tag의 밖에 있다고 해도 출력에서 제외한다. PHP interpreter는 지정된 조건이 충족되지 않으면 다음 부분으로 jump하기 때문에, 조건이 충족되지 않은 부분에 있는 내용은 출력에서 제외한다.

 

 

다음 사례는 php script HTML tag의 내부에 들어가 있는 경우를 보여주고 있다.

 

<html><body>
<p<?php if ($highlight): ?> class="highlight"<?php endif;?>>This is a paragraph.</p>
</body></html>

 

위 예에서 PHP interpreterPHP scriptHTML tag의 안에 포함되어 있더라도 상관하지 않으며, 또한 PHP closing tag "?>" 다음에 HTML opening tag가 있는 것도 상관하지 않는다. 따라서 위의 예에서 "$highlight""True"이면, 바로 아래 첫번째와 같은 내용이 출력될 것이다. 그렇지 않으면 아래 두번째와 같은 내용이 출력될 것이다. 이런 방식을 사용하면 HTML tag 내부에서 attribute의 값을 선택적으로 조정할 수 있다.

 

<html><body>
<p class="highlight">This is a paragraph.</p>
</body></html>

 

<html><body>
<p>This is a paragraph.</p>
</body></html>


 

   PHP의 대소문자 구별

 

 PHP의 모든 키워드들(if, else, while, echo)들과 클래스들, 함수들, 사용자 정의 함수들은 모두 대소문자 구별을 하지 않는다. 하지만, 모든 변수들은 대소문자 구별을 한다.

 

[사용 Example]

아래에 있는 세 개의 "echo" 문은 모두 정상적으로 작동한다.

 

<?php
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
?>

 

아래 예에서 처음 "echo" 문장에서만 "$color" 변수의 값을 인쇄하고, 나머지는 정상적으로 인쇄하지 않을 것이다왜냐하면 "$color", "$COLOR", "$coLOR"는 서로 다른 변수로 취급되기 때문이다.

 

<?php
$color = "red";
echo "My car is " . $color . "<br>";
echo "My house is " . $COLOR . "<br>";
echo "My boat is " . $coLOR . "<br>";
?>

 

 

 


 

   comment 규칙

 

PHP에서는 다음 세가지 형태의 comment를 사용할 수 있다.

    //              -- one-line comment

    #               -- one-line comment

    /*   */         -- multi-line comment

 

[사용 Example]

다음은 PHP에서의 comment에 대한 사례이다.

 

<?php
       // This is a single-line comment
       # This is also a single-line comment


       /*
       This is a multiple-lines comment block
       that spans over multiple
       lines
       */

       // You can also use comments to leave out parts of a code line
       $x = 5 /* + 15 */ + 5;

       echo $x;
?>

 

아래와 같은 형식으로 주석을 처리하는 것도 가능하다.

 

<?php
       echo 'This is a test';      // This is a one-line c++ style comment
       /* This is a multi line comment
       yet another line of comment */
       echo 'This is yet another test';
       echo 'One Final Test';    # This is a one-line shell-style comment
?>

 


 

24.4.3.3    변수  

 

   변수의 정의

 

PHP에서 자료를 저장하기 위해서 변수를 사용할 수 있다. 변수는 아래와 같이 "$" 기호로 시작하는 이름으로 정의한다.  

 

$<variable-name>

 

PHP 변수에 대한 규칙은 다음과 같다.

    변수는 "$" 문자로 시작하고, 그 뒤에 변수 이름이 온다.

    변수 이름은 반드시 문자나 underscore(_) 문자로 시작해야 하고, 숫자로 시작되면 안 된다.

    변수 이름은 단지 알파벳 문자 (A-z)와 숫자 (0-9), underscore (_)로만 이루어져야 한다.

    변수 이름은 대소 문자가 구별된다. 대소문자가 다르면 다른 변수로 취급된다.

 

 

   변수의 자료형

 

PHP 변수의 자료형은 사전에 정의되지 않고 저장되는 값에 따라서 자동적으로 적절한 데이터 타입으로 변환한다.

 


 

   Reserved 변수

 

다음 변수들은 사전에 정의되어 있는 것으로 다른 용도로 사용할 수 없다.

    $GLOBALS References all variables available in global scope

    $_SERVER Server and execution environment information

    $_GET HTTP GET variables

    $_POST HTTP POST variables

    $_FILES HTTP File Upload variables

    $_REQUEST HTTP Request variables

    $_SESSION Session variables

    $_ENV Environment variables

    $_COOKIE HTTP Cookies

    $php_errormsg The previous error message

    $HTTP_RAW_POST_DATA Raw POST data

    $http_response_header HTTP response headers

    $argc The number of arguments passed to script

    $argv Array of arguments passed to script


 

   변수의 scope

 

PHP에서 변수들은 스크립트 어디에서나 선언될 수 있다.  변수의 scope은 변수들이 사용되거나 불려질 수 있는 범위를 의미한다. PHP에서는 local scope 변수와 global scope 변수가 있다.

 

function 안에서 선언된 변수는 local scope를 갖게 되며, function 안에서만 사용할 수 있다.

 

function 밖에서 선언된 변수는 global scope을 갖게 되며, 기본적으로 function 밖에서 사용할 수 있지만, 필요하면 function 안에서도 사용할 수 있다. function 안에서 "global" 키워드를 이용하여 사전에 해당 변수가 global 변수임을 선언하면 global 변수를 사용할 수 있다. 모든 global 변수는 "$GLOBALS" 배열 안에 저장되어 있는데, "$GLOBALS [variable]"의 형태로 function에서 사용할 수 있다.

 

[사용 Example]

다음은 local 변수에 대한 사례이다.

 

<?php
function myTest() {
    $x = 5; // local scope
    echo "<p>Variable x inside function is: $x</p>";
}
myTest();

// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
?>

 


 

[사용 Example]

다음은 global 변수를 function 내에서 사용하는 사례이다.

 

<?php
$x = 5;
$y = 10;

function myTest() {
    global $x, $y;
    $y = $x + $y;
}

myTest();
echo $y; // outputs 15
?>

 

다음은 또다른 방식으로 global 변수를 function 내에서 사용하는 사례이다.

 

<?php
$x = 5;
$y = 10;

function myTest() {
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}

myTest();
echo $y; // outputs 15
?>

 


 

24.4.3.4    constant(상수)

 

constant는 고정된 값에 이름을 지정한 것이다. 상수 이름은 영문자나 underscore(_)로 시작하고, 그 다음은 영문자, 숫자, underscore를 자유롭게 사용할 수 있다. 상수 이름 앞에 "$" 기호를 붙이지 않는다.

 

constant는 변수처럼 사용할 수 있다. 변수와 달리 한번 정의되면, 나중에 변경할 수 없는 특성을 가지며, 전체 script 안에서 자동적으로 global scope을 갖는다.

 

 constant를 정의할 때는 "define( )" 함수를 사용한다.

 

define( name,  value,  case-insensitive )

 

    name                     -- constant 이름을 명시한다.

    value                     -- constant 값을 명시한다.

    case-insensitive        -- constant 이름이 대소문자를 구별하는지를 지정한다.

-- 기본값은 "False"이다.

 

[사용 Example]

다음은 상수에 대한 사례이다.

 

<?php
// Valid constant names
define("FOO2",    "something else");
define("FOO_BAR", "something more");


// Invalid constant names
define("2FOO",    "something");

?>

 


 

다음은 대소문자를 구분하지 않는 constant를 정의하고, function 내부에서 사용한 사례이다.

 

<?php
define("GREETING", "Welcome to W3Schools.com!", true);


function myTest() {
    echo GREETING;
}
myTest();
?>

 

 


 

24.4.3.5    자료형(data type)

 

PHP에서는 다음과 같은 data type을 지원한다.

    String

    Integer

    Float (floating point numbers)

    Boolean

    Array

    Object

    NULL

    Resource

 

 

   string

 

string은 문자들이 연속된 것으로 여러 문자들이 quote로 둘러 쌓여 있는 텍스트를 말한다. single quote(‘ ‘) double quote(" ")를 구분없이 사용할 수 있다.

 

[사용 Example]

다음은 string 자료형에 대한 사례이다.

 

<?php
$x = "Hello world!";
$y = 'Hello world!';

echo $x;
echo "<br>";
echo $y;
?>

 


 

   integer

 

integer는 소수점이 없는 정수를 의미한다. 이 수의 범위는 -2,147,483,648에서 +2,147,483,647 이다.

 

 

   float (floating point numbers)

 

float는 소수점이 있는 숫자이거나 지수 형태의 숫자를 말한다.

 

[사용 Example]

다음은 float 자료형의 사례이다.

 

<?php

$x = 10.365;

var_dump($x);

?>

 

 

   boolean

 

boolean "True" "False" 두 가지 상태를 나타내는 자료이다. boolean 값을 표현할 때는 "True", "False"를 사용하며, 대소문자를 구별하지 않는다.

 

연산식의 결과를 boolean으로 변환할 때, 다음의 경우는 "False"로 처리되고, 그 이외의 경우는 모두 "True"로 처리된다. 숫자인 경우는 음수와 양수를 가리지 않고 zero가 아닌 숫자는 모두 "True"로 간주한다.

    boolean FALSE 자체

    integer 0 (zero)

    float 0.0 (zero)

    비어 있는 string "0"이 있는 string

    zero elementarray

    member variable가 없는 object (PHP 4 )

    special type NULL (unset variable 포함)

    empty tags로 만들어진 SimpleXML object

 

[사용 Example]

다음은 여러가지 boolean 자료의 예이다.

 

<?php

       var_dump((bool) "");          // bool(false)

       var_dump((bool) 1);           // bool(true)

       var_dump((bool) -2);          // bool(true)

       var_dump((bool) "that");     // bool(true)

       var_dump((bool) 2.3e5);       // bool(true)

       var_dump((bool) array(12));    // bool(true)

       var_dump((bool) array());      // bool(false)      àzero element

       var_dump((bool) "false");      // bool(true)       à empty string이 아님

?>

 

 

   array

 

array는 하나의 변수에 여러 개의 값을 저장하는 자료이다. PHP array는 내부적으로 key value가 서로 연결되어 정렬된 형태의 자료이다.

 

array "array( )" 문을 사용하여 정의하며, 여러 개의 argument가 있으면, 각각의 argument comma로 분리한다. PHP 5.4부터 "array( )" 대신 "[  ]" 형식을 사용할 수도 있다. 다음과 같이 정의한다.

 

array(

    key1 => value1,

    key2 => value2,

    key3 => value3,

    ...

)

 

key에는 integer string을 사용할 수 있다. value에는 어떤 값이든 사용할 수 있다. key는 선택적으로 사용할 수 있으며, 만약 지정하지 않으면 직전에 사용한 가장 큰 정수 key 값에서 하나 증가된 값이 지정된다. .

 

[사용 Example]

다음은 key가 지정된 array의 사례이다.  

 

<?php

$array = array(

    "foo" => "bar",

    "bar" => "foo",

);

 

// as of PHP 5.4

$array = [

    "foo" => "bar",

    "bar" => "foo",

];

?>

 

다음은 key가 지정되지 않은 array의 사례이다.

 

<?php

$array = array("foo", "bar", "hello", "world");

var_dump($array);

?>

 


 

   object

 

object는 특별히 정의된 자료 형태로 내부에 data data 처리 방법을 함께 포함하고 있는 data type이다.

 

PHP에서 object는 반드시 사전에 선언하고 사용해야 한다. object를 정의할 때는 "class" 문을 사용하여 object class를 먼저 선언한다. class는 내부에 property method를 포함하고 있는 데이터 구조이다. class가 정의되면, 사전 정의된 class에 대해서 "new" 문을 사용하여 실제의 object를 생성한 다음, 해당 object에서 필요한 작업을 수행하게 된다.

 

[사용 Example]

다음은 class를 정의하고, "new" 문으로 object를 생성한 다음 필요작업을 하고 있다.

 

<?php

class Car {

    function Car() {

        $this->model = "VW";

    }

}

 

// create an object

 $herbie = new Car();

 

// show object properties

echo $herbie->model;

?>


 

Leave a Reply