태그
Analytics Stats
  • All
  • Book
  • Diary
  • Programing
  • Web Skill

컴퓨터는 다양한 데이터 값을 처리합니다. 정수값, 실수값 및 문자열 등 프로그램 언어들은 이러한 다양한 데이터 값을 연산하고 결과를 출력합니다. 데이터의 값은 개발자가 사전에 정의한 값이 될 수도 있고, 프로그램에서 연산을 통해 생성된 데이터일 수도 있습니다. 개발자가 프로그램에서 직접 정의한 데이터 값은 프로그램 동작 중에는 변경되지 않느...

PHP는 자유로운 스타일의 언어입니다. 또한 프로그램 소스 코드느 개발자 성향과 개발 방법에 따라서 코드 작성 표기가 자유롭습니다. PHP는 오픈소스, 프레임워크 등 공개로 인하여 여러 개발자들이 소스를 공유하고, 함께 개발하고 있습니다. 또한 이러한 공유와 나눔으로 PHP는 많은 발전을 하고 있습니다. PSR은 PHP Standard Recommendation의 약자로 PHP-FIG에서 권장하는 PHP의...

[read more="03.1  PHP 기본 문법" less="접기"]PHP는 스크립트 언어입니다. 스크립트 언어는 또 다른 말로 인터프리터 언어라고도 말 할 수 있습니다. 즉 프로그램이 실행될 때마다 해당 언어 소스를 컴퓨터가 이해할수 있는 기계어 코드로 변환하여 처리하는 언어입니다. 대표적으로 베이직, 자바, PHP 등이 있습니다. PHP는 서버 사이드 언어 서버 사이트 언어란 프로그램을 실행하는 주체가 사용자 각각의 컴퓨터에서 동작하는 것이 아니라 주로 서버에서 프로그램이 실행된다는 의미입니다. 또한, 서버는 이렇게 실행된 결과물을 가각의 접속된 클라이언트 PC에 내용을 추력하는 역할을 합니다. 이런 점에서 PHP는 대표적인 서버-클라이언트 기반의 웹 서비스 용도로 많이 사용합니다. PHP가 서버 사이드 언어라고 해서 꼭 서버에서만 동작하는 것은 아닙니다. 서버란 추상적인 의미일 뿐 일반적인 개인용 컴퓨터에서도 작동이 됩니다. 개인 컴퓨터에서 서비스 개발한 후에 소스를 서버로 옮겨서 서비스하면 됩니다. 프로그램 코딩 코딩이란 로직을 설계하고 설계한 로직을 프로그래밍 언어의 문법에 따라 일정한 양식으로 작성하는 명령 집합을 생성하는 작업입니다. 또한 이러한 코딩으로 작성된 프로그램은 개발자가 지시한 명령에 따라 데이터를 처리하고 결과를 출력합니다. 프로그램을 개발하다 보면 다양한 오류가 발생할 수 있습니다. 오류는 크게 두 가지로 구분할 수 있습니다.
  • 구문오류: 코딩을 하다 보면 콤마, 세미콜론 등이 틀리거나 오탈자로 인한 문법 오류가 나는 경우가 있습니다. 이런 경우는 언어에서 오류를 알려주기 때문에 오류 메시지를 잘 보면 좋습니다.
  • 논리오류: 프로그램을 작성하다가 설계상의 오류가 발생한 경우입니다. 이런 경우 설계 로직을 다시 한번 확인하는 것이 좋습니다.
[/read]
[read more="03.1.1  PHP 프로그램 작성하기" less="접기"]PHP를 통해 프로그램을 작성하는 것은 매우 자유롭습니다. 특정 개발 환경 프로그램을 사용해서 코딩하는 것이 아니라 우리가 일반적으로 사용을 하는 텍스트 에디터를 이용하여 자유롭게 작성을 할 수 있습니다. 그냥 선호하는 에디터를 선택하여 사용하면 됩니다.
  • 코딩 : 프로그램 소스를 작성하는 행위
  • 에디터의 종류 : 프로그래머는 보통 자신이 선호하는 텍스트 에디터가 하나씩은 있습니다. 필자의 경우 서브라인이나 아톰 에디터를 선호합니다. 또한 이 프로그램은 무료로 자유롭게 다운로드하여 사용 가능합니다
PHP 코드를 상징하는 기호 <?와 ?> 프로그램 소스상에서 PHP 인터프리터가 파일의 전부를 PHP 코드로 인식하지는 않습니다. 소스 파일을 읽을 때 <? 또는 <?php 기호를 만나는 순간부터 PHP 소스로 인식합니다. 또한 ?>를 만나면 PHP 소스가 끝나는 시점으로 해석을 종료합니다. 이런 자유로운 프로그램 코딩 방식은 PHP를 다른 언어에 삽입하여 두 가지 이상의 언어와 혼합해서 사용 가능하다는 장점이 있습니다. 주로 HTML 소스 안에 PHP 소스 코드를 삽입하거나 또는 HTML 소스 안에서 자바스크립트 코드와 PHP 코드를 혼합하여 프로그래밍이 가능할 수도 있습니다. 이런 프로그램 코드의 강점과 달리 유지보수 측면을 고려하여 별도로 PHP 코드만 불리하는 경우도 있습니다. 보통 프레임워크가 MVC 패턴엑서 view 처리 부분이 이와 유사합니다. PHP 는 HTML 등 다른 언어와 같이 사용해도 되고 독립적으로 사용해도 괜찮습니다. 모두 정상적으로 잘 동작합니다. 다음 PHP 언어를 HTML 마크업과 같이 사용하는 예입니다. 예제 파일 | hello-01.php

PHP 페이지를 만들어 봅니다.

 

위의 예제를 보면 HTML 코드 안에 PHP 코드가 삽입되어 있습니다.
또는 PHP 코드만 독립적으로 사용할 때는 다음과 같이 사용해도 됩니다.

하나의 프로그램 소스 안에서 <?php와 ?>은 한 번만 사용을 해야 되는 것은 아닙니다. 그때마다 필요할 때 PHP 코드들을 분리해서 삽입이 가능합니다. 다음 예제는 하나의 HTML 파일에 2개의 php 코드 그룹을 넣은 예제입니다. 예제 파일 | hello-02.php

PHP 페이지를 만들어 봅니다.

 

두 번째로 PHP 코드를 삽입 합니다.

 

위처럼 HTML 마크업 안에서 2개의 PHP 코드를 그룹 분할하여 삽입하는 기능은 PHP 코드가 다른 언어와 연결하여 프로그래밍하는 데 많은 도움을 줄 수 있습니다.

php 종료 태그 생략
PHP는 종료 태그 "?>"로 끝나는 경우에 한하여 다음과 같이 태그를 생략할 수 있습니다. 하지만 PHP 코등 스타일 PSR-2에서는 PHP 소스의 마지막에 종료 태그 ?>를 생략해서 쓰는 방법을 권장하고 있습니다. 종료 태그 ?>를 생각하게 되면 예상치 않은 출력 오류를 방지할 수도 있습니다.

예제 파일 | hello-03.php
    
위의 예제 표현은 마지막에 종료 태그 ?>를 삭제한 것입니다. 태그를 삭제해도 PHP 실행에는 지장이 없습니다.[/read]
[read more="03.1.2  PHP 확장자" less="접기"]모든 파일은 대부분 확장자 기호를 가지고 있습니다. 소스 파일을 열어보지 않고도 작성한 파일이 PHP 언어로 작성한 것인지를 쉽게 확인할 수 있도록 PHP 언어 또한 확장자 기호가 있습니다. PHP로 작성하는 프로그램은 대부분 .php라는 확장자로 구분합니다. 하지만 꼭 확장자를 .php로 써야만 하는 것은 아닙니다. .html 또는 .phtml등 다양한 확장자를 쓰기도 합니다. 즉 PHP는 확장자로 인해 프로그램 실행에 영향받지 않습니다. .htm 확장자를 가진 HTML 파일에서도 >?php ~~ ?>기호를 통해 PHP 프로그램 소스를 삽입할 수 있습니다. 참고로 .php 확장자 의미와 지정은 환경 설정 및 아파치와 같은 서버 프로그램에서 설정한 값을 따릅니다.[/read]
[read more="03.1.3  HTML, CSS, Javascript" less="접기"]PHP는 웹 서비스 개발 용도로 많이 사용을 하는 서버 사이드 언어입니다. 따라서 위의 예제처럼 PHP 소스 코드 이외에 약간의 HTML, CSS. Javascript 내용이 함께 들어가는 경우가 있습니다. 이책에서는 이와 관련하여 별도의 설명을 하지 않습니다. 관련 정보는 미리 습득하면 이 책을 좀 더 쉽게 이해하는 데 도움이 될 것입니다.[/read]
[read more="03.2  명령어 구분: 세미콜론(;)" less="접기"]PHP는 C언어나 자바처럼 프로그래밍 언어 중에서도 고급 언어에 속합니다. 고급언어란 컴퓨터가 이해하는 기계어나 어셈블리어처럼 마이크로프로세서 중심의 언어로 작성되는 것이 아닌, 사람이 일반적인 언어처럼 쉽게 문장을 이해할 수 있는 형태의 언어 구조를 말합니다. 대표적인 고급 언어로는 C 언어, 베이직, PHP, 자바 등이 이에 속합니다. 기본적으로 프로그램은 소스 상의 한 줄 단위로 명령어를 읽어서 컴퓨터에서 해석하고 동작합니다. 하지만 프로그래밍 언어가 고급 언어로 넘어오면서 한 줄로 다 표현할 수 없는 경우가 많아지고, 가독성이 떨어지는 문제가 있습니다. 이런 경우 한 줄 단위 명령처럼 하나의 명령의 끝을 표기해야만 컴퓨터가 1개의 명령문을 이해할 수 있습니다. 이런 표기를 대부붑ㄴ의 언어에서는 세미콜론(;)을 이용하여 처리합니다. 즉 하나의 프로그램 문장이 시작하여 세미콜론을 만나게 되면 컴퓨터는 하나의 명령문으로 인식을 하고 처리합니다. 여기서 주의할 점은 많은 초보자 개발자들이 세미콜런(;)과 콜론(:)을 헷갈린다는 것입니다. 만일 소스상에서 세미콜론을 빼먹거나 잘못 입력했을 경우에는 프로그램 오류로 동작을 하지 않습니다. 또는 프로그램 전체가 동작하지 않을 수 있습니다. 다음은 Hello World! 라는 문장을 세 번 출력을 하는 간단한 PHP 프로그램입니다. 각각의 명령어 문장 뒤에는 세미콜론(;)이 붙어서 1개의 명령문을 구분하고 있습니다. 예제 파일 | hello-04.php
  
    
  

첫 번째 Hello World!는 한 줄에 모두 쓰여 있어서 한 줄 명령과 헷갈릴 수도 있을 것입니다. 하지만 두 번째와 세 번째 명령을 보면 하나의 명령을 두 줄이나 세 줄로 표시해서 출력할 때 명령의 끝을 세미콜론(;)을 통해 다수의 라인으로 명령을 작성학 수 있습니다. 명령의 구분자는 왜 중요할까요? 그리고 명령 구분자 세미콜론(;)을 넣지 않으면 왜 프로그램이 실행되지 않을까요/ 고급 언어의 경우 컴파일/인터프리터라는 처리 후에 컴퓨터가 인지되는 프로그램으로 변경되기 떄문입니다. 고급 언어는 앞에서 언급한 것과 같이 컴퓨터가 이해를 하지 못하는 언어 구조입니다. 사람이 좀 더 쉽게 이해할 수 있도록 만든 가상의 언어입니다. 그래서 고급 언어는 실행 전에 컴파일러/인터프리터라는 프로그램이 고급 언어로 작성된 소스를 읽어 세미콜론(;)으로 구분을 하고 각각의 작성된 내용을 분석하여 기계어로 만듭니다. 그래서 명령어의 구분자인 세미콜론(;)을 입력하지 못하면 컴파일러/인터프리터가 작성된 소스를 구분할 수 없고 잘못 분석하여 처리하기 때문에 프로그램이 동작하지 않습니다.[/read]
[read more="03.2.1  컴파일러란?" less="접기"]우리가 작성한 코드는 컴퓨터에서 실행할 수 있는 코드로 변환되어 동작하게 됩니다. 이러한 변환 작업을 컴파일한다고 표현합니다. 컴파일 작업을 한 번하게 되면 소스 코드 이외에 컴퓨터 실행 코드로 된 기계어 파일이 추가로 생성됩니다. 실제적인 프로그램 동작은 이 기계어 파일이 됩니다. 만일 소스를 수정하게 되면 다시 컴파일 과정을 거쳐서 실행되는 기계어 파일을 다시 생성해야만 합니다. 컴파일된 기게어 파일은 한 번의 언어 변환을 했기 때문에 빠른 실행이 가능합니다. 하지만 매번 소스 변경할 때마다 컴파일해야 하는 불편함이 있습니다. 대표적인 컴파일 언어로는 C언어가 있습니다.[/read]
[read more="03.2.2  인터프리터란?" less="접기"]이와 반대로 컴파일 작업을 하지 않고 소스를 실행할 때마다 해석하여 기계어 코드로 실행하는 방법을 인터프리터라고 합니다. 인터프리터는 프로그램이 실행될 때마다 소스를 해석하고 이와 관련된 기계어 코드를 임시로 생성하여 실행합니다. 컴파일된 기계어 코드보다는 다소 느리지만 소스를 변경할 때마다 컴파일하지 않기 때문에 빠른 개발이 가능합니다. 인터프리터 언어로 제작된 프로그램은 소스가 같이 공개 배포되기 떄문에 작성한 코드를 암호화할 수 없습니다. 인터프리터 언어는 보안상 중요하지 않고 간단한 프로그램 제작에 많이 사용합니다. 또한 공개 오픈소스 언어로 많은 인기를 얻고 있습니다. 대표적으로는 베이직, PHP, 자바스크립트, 파이썬 등이 있습니다.[/read]
[read more="03.3  주석문" less="접기"]모든 프로그램 개발 언어는 주석문이라는 기능이 있습니다. 주석은 프로그램 언어에서 개발자가 소스상에 설명을 적는 역할을 합니다. 방대한 프로그램 소스를 여러 사람이 공유하면서 상호 이해하거나 아니면 자신이 작성한 코드를 그때의 기억을 쉽게 떠올리기 위해 사용하는 기능이 주석 기능입니다. 주석 기능은 설명을 적기 위해 도입되었지만 실제 상황에서는 설명만이 아니라 잠시 소스 코드의 실행을 배제하는 용도로도 많이 사용합니다. 또한 주석 문법은 대부분의 언어가 비슷하기 때문에 1개의 언어로 학습을 해둔다면 다른 언어를 배우는 데도 많은 도움이 됩니다. 주석은 키게 두 가지 방식을 제공합니다. 첫 번째는 소스를 읽었을 때 한 줄 한 줄을 주석으로 처리하는 한 줄 주석처리문과 여러 줄읋 한꺼번에 처리하는 방법이 있습니다.[/read]
[read more="03.3.1  한 줄 주석 처리" less="접기"]한 줄 주석처리는 프로그램 소스상에서 한 줄만 주석으로 처리합니다. 한 줄을 주석으로 처리하기 위해서는 주석을 처리하고자 하는 위치에서 슬래시(/) 기호를 두 번 역속해서 넣으면 됩니다. 즉, 주석을 처리하고자 하는 위치에 //기호를 넣으면 됩니다. 한 줄 주석 처리 기호의 시작 위치는 중요하지 않습니다. 기호를 삽입하는 바로 다음 문자부터 한 줄의 끝을 만나는 지점까지 모두 주석으로 처리합니다. 예제 파일 | comment-01.php
    
한 줄 주석을 사용하는 습관은 프로그래머마다 다릅니다.[/read]
[read more="03.3.2 여러 줄 주석 처리" less="접기"]여러 줄 주석 처리 기능은 한 줄 처리 주석과 달리 여러 줄의 내용을 한꺼번에 주석으로 처리하고자 할 때 사용하는 방법입니다. 특정 블록 영역을 주석으로 처리할 때 매우 편리합니다. 여러 줄을 주석으로 처리하는 방법은 /* 로 시작해서 */로 블록을 정하면 됩니다. 해당 기호로 감싸인 내용은 프로그램 소스상에서 주석으로 처리되어 실행되지 않습니다. 다음예제에서 여러 줄 주석 처리 방법을 확인할 수 있습니다 예제 파일 | comment-02.php
    
여러 줄 주석 처리 /**/는 중첩되어 사용할 수 없습니다. 즉, /**/로 주석 처리된 블록 안에서 또 다른 /**/주석 블록을 삽입할 수 없다는 뜻입니다. 이런 경우 PHP 는 에러를 발생하고 실행이 중단됩니다. 다중 주석 처리문 안에는 한 줄 주석을 상비할 수 있습니다 오픈소스 등 공개된 소스를 다운로드해서 보면 수많은 줄의 설명 주석을 보게 됩니다. 이 처럼 주석문을 잘 사용을 하면 소스 오류를 테스트하고 다른사람과 개발에 대한 정보를 소스 코드에 설명을 삽입하여 공유할 수 있습니다. 주석을 잘 작성하는 것은 매우 중요합니다. 오래되고 경험이 많은 개발자일수록 주석문을 통해 소스에 대한 설명을 많이 기재합니다.[/read]
[read more="03.4  화면 출력" less="접기"]앞으로 PHP를 본격적으로 공부하기 앞서 많은 예제를 만나보게 될 것입니다. 또한 예제 소스들은 결과 내용을 출력하는 화면 출력 함수들을 많이 사용합니다. 그런 점에서 이해가 어렵더라도 뒤에서 설명할 결과를 확인하는 과정과 화면 출력에 대한 함수 일부분에 대해서 미리 살펴보겠습니다. PHP에서 화면 출력함수는 아주 다양합니다. 하지만 여기서는 지면상 모든 내용을 다 설명할 수는 없으므로 몇 가지 화면 출력 명령에 대해서 이야기하겠습니다. 대표적인 명령으로는 echo와 print가 있습니다.[/read]
[read more="03.4.1  ECHO" less="접기"]PHP에서는 강력하면서 간단하게 사용할 수 있는 echo 명령이 있습니다. echo 명령은 이후에 표시된는 값을 화면에 출력하는 명령입니다. echo는 명령어도 될 수 있고 함수도 될 수 있습니다. echo는 ()를 사용해도 되고 생략해도 됩니다. 명령어 문법
echo 출력한 내용; echo (출력할 내용);
위의 두 가지 표현을 모두 사용을 할 수 있습니다. echo 명령문은 상수값, 직접 입력되는 문자열 및 각종 변수의 값을 출력할 수 있습니다. 또한 여러 개의 출력 내용을 연결하고 연산된 값을 바로 출력하는 등 강력한 화면 출력 기능을 제공합니다. echo 실습1 문자열을 화면에 출력할 수 있습니다. echo 뒤에 직접 문자열 값을 입력하여 화면에 출력 할 수 있습니다. 예제 파일 | echo-01.php
    
echo 실습2 변수의 값을 화면에 출력할 수 있습니다. 문자열 "hojin.io"를 $txt 변수에 저장하고 저장된 $txt 변수의 값을 화면에 출력합니다. 변수의 자세한 개념은 다음 장에서 설명합니다. 예제 파일 | echo-02.php
    
echo 실습3 문자열과 변수값을 결합하여 화면에 출력할 수 있습니다. 직접 입력된 문자열과 변수에 저장된 문자열을 연결하는 연산자인 점(.)을 통해 연결 후 화면에 출력합니다. 연산자에 대한 자세한 개념은 다음 장에서 설명합니다. 예제 파일 | echo-03.php
    
echo 실습4 연산 결과값을 화면에 출력할 수 있습니다. 변수 $x와 $y의 변수값을 연산 후 바로 화면 출력이 가능합니다. 예제 파일 | echo-04.php
    
[/read]
[read more="03.4.2  print" less="접기"]PHP는 echo 출력문 이외에 다른 언어에서 쉽게 접해볼 수 있었던 print 명령도 같이 지원합니다. print 명령문 또한 화면에 출력하는 기능을 합니다. print 명령어는 echo와 같이 ()를 사용해도 되고 생략해도 됩니다. print 실습1 print() 함수를 이용하여 문자열을 화면에 출력할 수 있습니다. 사용법은 echo와 비슷합니다. 예제 파일 | print-01.php
    
print 실습2 변수의 값을 화면에 출력할 수 있습니다. 문자열 "hojin.io"을 $txt변수에 저장하고, 저장된 $txt변수의 값을 화면에 출력합니다. 예제 파일 | print-02.php
    
print 실습3 문자열과 변수값을 결합하여 화면에 출력할 수 있습니다. 직접 입력된 문자열과 변수에 저장된 문자열을 연결 연산자인 점(.)을 통하여 연결후 화면에 출력합니다. 예제 파일 | print-03.php
    
print 실습4 연산 결과값을 화면에 출력할 수 있습니다. 변수 $x와 $y의 변수값을 연산 후 바로 화면 출력이 가능합니다. 예제 파일 | print-04.php
    
[/read]
[read more="03.4.3  echo VS print" less="접기"]echo와 print 명령은 서로 유사한 기능을 하는 명령어입니다. 하지만 두 기능을 엄밀히 구분해 본다면 반환값입니다. 반환값은 print가 함수형으로 반환 처리를 한다는 것 입니다. print는 명령 실행 후 true(1)값을 반환하지만 echo는 그냥 화면에 출력만 합니다. 함수에 대한 자세한 개념은 다음 장에서 설명합니다. 예제 파일 | print-05.php

PHP는 다양한 OS를 지원합니다. www.php.net 사이트에서 설치 파일을 다운로드하여 직접 설치도 가능하지만, 요즘은 편리하게 APM(아파치 웹 서버 + PHP + MySQL) 설치 프로그램을 많이 사용합니다. [read more="02.1 다양한 플랫폼" less="접기"]PHP가 대부분 리눅스 서버 기반에 서비스입니다. 개발 환경은 윈도우와 더불어 맥 등의 인기로 다양해졌습니다. 따라서 PHP는 그...

리눅스가 웹 서비스를 위한 운영체제로 인기를 끌기 시작되면서 PHP는 현재 7.x 버전까지 꾸준히 발전을 하면서 많은 개발자들의 사랑을 받은 오래된 웹 개발 언어입니다. 20년 이상 꾸준히 개발 현장에서 사랑을 받아온 PHP는 한때 인터넷 붐과 함께 잠시 주춤했으나 최근 페이스북 등 많은 소셜 사이트가 PHP로 개발한다는...