[PHP] 개발환경 설정 및 문법

Y·2024년 2월 8일

Web

목록 보기
5/8

PHP란?

Hypertext Preprocessor의 약자로, 주로 웹 개발에 사용되는 서버 측 스크립트 언어이다. PHP는 HTML과 함께 사용되며, 데이터베이스와 상호 작용하여 다양한 웹 응용 프로그램을 만들 수 있다.

개발환경 설정

XAMPP을 설치하고 Control Panel에서 Apache, MySQL을 start 해 주면 된다.

이때 Apache(아파치)는 사용자의 요청을 받아들이는 웹 서버로, 요청이 있을 경우 php를 실행시키는 역할을 한다.

VSCode에서 PHP를 실행하기 위해서는 settings.json 파일을 편집하여

아래 사진과 같이 php.validate.executablePathC:\\xampp\\php\\php.exe를 설정해 주면 된다.

기초 문법

php 프로그램 만들기

xamppp설치경로/htdocs 디렉터리 안에 아래 코드를 hello.php 파일로 저장한다.

<?php //php 실행을 시작하는 기호
    echo "Hello PHP"; //출력 담당 명령어
?> //php 실행을 끝내는 기호

브라우저에서 http://localhost/hello.php 를 입력하면 아래와 같은 결과가 출력되는 걸 볼 수 있다.

주석 달기

<?php
    // 실행되지 않는 한 줄 주석
    >
    /*
    실행되지 않는
	여러 줄 주석
    */
    echo "this page is comment";    
?>

변수

$변수이름 = 변수에 들어갈 값
타입 선언을 하지 않고, 자동으로 결정된다.
var_dump는 데이터의 정보를 보여 주는 내장 함수이다.

<?php
$a = 1; // 정수 int
$b = 3.14; // 실수 float
$c = "hi"; // 문자열 string
$d = array(1,2,3,4); // 배열 array
$e = array('a'=>1, 'b'=> 2); // 연관배열 associative array
>
var_dump($a);echo "<br />";
var_dump($b);echo "<br />";
var_dump($c);echo "<br />";
var_dump($d);echo "<br />";
var_dump($e);echo "<br />"; 

실행 결과

int(1)
float(3.14)
string(2) "hi"
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) }
array(2) { ["a"]=> int(1) ["b"]=> int(2) }

배열

일반 배열

배열의 선언, 생성하면서 초기값을 넣어도 무관하다.

$a1 = array();
$a2 = [1, 2, 3, 4];

항목을 추가할 때는 array_push(배열, 넣을 값) 을 사용한다.

array_push($a, 5);

항목을 삭제할 때는 unset을 사용한다. 이때 남은 배열의 항목들의 인덱스가 재배치되지 않는다.

unset($a[0]);

연관 배열

연관 배열은 키:값 쌍으로 이루어진다.

$b = array('a' => 10);

항목을 추가할 때는 $변수명[키] = 값 을 사용한다.

$b['b'] = 20;

항목을 삭제할 때는 unset을 사용한다.

unset($b['a']);

php는 일반 배열과 연관 배열을 혼합하여 사용 가능하다.

$c = [1,2,3];
$c['age'] = 999;
var_dump($c);

실행 결과

array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) ["age"]=> int(999) } 

연산자

산술 연산자

종류설명
+숫자 두 개를 더함
-앞 숫자에서 뒤 숫자를 뺌
*숫자 두 개를 곱함
/앞 숫자에서 뒤 숫자를 나눔
%앞 숫자에서 뒤 숫자를 나눈 나머지를 구함
.문자열 두 개를 이어붙임

비교 연산자

종류설명
==값이 같은지 비교
===값과 타입이 같은지 비교
!=값이 다른지 비교
<>값이 다른지 비교, !=과 같음
!==값과 타입이 다른지 비교
>앞 숫자가 뒤 숫자보다 큰지 비교
<앞 숫자가 뒤 숫자보다 작은지 비교
>=앞 숫자가 뒤 숫자보다 크거나 같은지 비교
<=앞 숫자가 뒤 숫자보다 작거나 같은지 비교

결과는 bool(true) , bool(false)로 출력된다.

논리 연산자

종류설명
&&and, 둘 다 참이어야 참이다
||or, 둘 중 하나라도 참이면 참이다
!not, 참이면 거짓을, 거짓이면 참을 반환한다
<?php
$a = true;
$b = false;

$c = $a && $b;
$d = $a || $b;
$e = !$a;

var_dump($c);echo "<br />";
var_dump($d);echo "<br />";
var_dump($e);echo "<br />";

실행 결과

bool(false) 
bool(true) 
bool(false) 

조건문

<?php
$second = date('s'); //현재 시간을 가져오는 내장 객체
echo $second;
if ($second % 3 == 0){
   echo " : 나머지가 0임";
}
elseif ($second % 3 == 1) {
   echo " : 나머지가 1임";
}
else{
   echo " : 나머지가 2임";
}

반복문

거의 대부분 foreach 반복문을 사용한다.
foreach(배열 as 배열항목)

foreach($a as $item){
    echo $item;
    echo "<br />";
}

함수

function 함수이름(파라미터1, 파라미터2..) {
	함수 내용
}

GET 파라미터

쿼리스트링(Query String): 브라우저에서 주소창으로 전달하는 GET 파라미터는 ?로 시작하며, 각 항목은 키:값 형태로 구성하고, 항목간의 연결에는 &로 표시한다.

get.php 파일에 아래 코드를 저장한 후,

<?php

$name = $_GET['name'];
$age = $_GET['age'];

echo "name is $name, age is $age";

http://localhost/get.php?name=syj&age=22 브라우저에 접속하면 아래와 같은 결과를 얻을 수 있다.

POST 파라미터

post.php 파일에 아래 코드를 저장한 후,

<form method="post">
    name : <input type="text" name="name" />
    age : <input type="text" name="age" />
    <input type="submit" />
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	// HTTP 메소드가 POST일 때 실행되는 부분
    $name = $_POST['name'];
    $age = $_POST['age'];

    echo "name is $name, age is $age";
}
?>

http://localhost/post.php 브라우저에 접속하면 아래와 같은 화면을 볼 수 있다.

aaa, 222를 입력한 후 제출하면 입력값이 하단에 출력된다.

리다이렉트

다른 페이지로 이동하는 것을 뜻한다.
redirect.php 파일에 아래 코드를 저장한 후,

<?php
header("Location: /target_url");
exit(); // php 실행을 끝내는 표시, 리다이렉트가 아닌 다른 상태로 바꿀 가능성을 차단하기 위해 사용함
?>

http://localhost/redirect.php 에 접속하면 http://localhost/target_url 로 이동한다.

세션 다루기

세션: 서버에 저장되는 접속 클라이언트별 사용자의 정보이다.

<?php
function redirect($url){
    header('Location: ' . $url);
    exit();
}
>
session_start(); // php에서 세션을 사용하기 위해 반드시 써야 함
$action = $_GET['action']; // 파라미터에 따라 하는 일을 구분하기 위해 쿼리 스트링으로 입력받음
>
if ($action == "set"){
    $_SESSION['key'] = 'session_value'; // 세션 설정
    redirect("?action=get"); // 세션 설정 후 주소로 이동
    >
}elseif ($action == "get"){
    if (isset($_SESSION['key'])){ // 세션이 있다면
        echo $_SESSION['key']; // 세션 출력
    }else{ // 세션 없다면
        echo "NO SESSION"; // 메세지 출력
    }
}elseif ($action == "remove"){
    if (isset($_SESSION['key'])){ // 세션이 있다면
        unset($_SESSION['key']); // 세션 삭제
    }
    redirect("?action=get"); // 세션 삭제 후 주소로 이동
}

실행 결과
1. 세션이 없을 때를 확인하기 위해 http://localhost/session.php?action=get 로 접속한다.

2. 세션 세팅을 위해 http://localhost/session.php?action=set 로 접속한다면 이후 http://localhost/session.php?action=get 로 이동한다.

3. 세션 삭제를 위해 http://localhost/session.php?action=remove 로 접속한다면 삭제 이후 http://localhost/session.php?action=get 로 이동한다.

날짜 시간 계산하기

$date1 = date("Y-m-d H:i:s");
  • Y 년도 4자리
  • y 년도 2자리
  • m
  • d
  • H 24시간 표기 시간
  • h 12시간 표기 시간
  • i
  • s
// 날짜 타입, 날짜를 더하거나 빼고 비교 가능
$date2 = new DateTime();

// DateTime 타입을 문자열로 바꾸고 싶다면 `->fromat(날짜포메터)` 를 사용
$date2->format("Y-m-d H:i:s")

// 날짜를 더하고 싶다면 add 사용, "P1D" 는 Period 1 Day, 하루 간격이라는 뜻
$date2->add(new DateInterval("P1D"));
// 문자열을 사용해 하루를 추가하려면
date("Y-m-d", strtotime($date1.'+ 1 days'))

//위 한문장을 아래처럼 적을 수 있음
$date = "2021-02-24";
$tomorrow_expression = $date . " + 1 days"; // 2021-02-24 + 1 days
$tomorrow_time = strtotime($tomorrow_expression); // 1614207600
$tomorrow_date = date("Y-m-d", $tomorrow_time); // 2021-02-25

첨부된 링크를 참고하여 작성했습니다.

0개의 댓글