개발하는 두부

[PHP] 기본 문법 정리 (1)

by 뚜부니

PHP

0. 주석

문법에 대한 기본적인 정리를 하기 전 주석에 대해 정리하겠습니다.

주석이란 코드상에서 해석되지 않고 무시되는 코드인데요, PHP에서 주석의 종류는 다음과 같습니다.

1. 한 줄 C언어 스타일   : //주석문
2. 여러 줄 C언어 스타일 : /*주석문*/
3. 한 줄 쉘 스타일      : #주석문

 

1. 숫자와 문자

1.1. 숫자

숫자에 대해 화면에 출력하는 방법은 다음과 같이 간단합니다.

<?php
echo 1;
?>

 

실행 결과를 화면을 통해 확인하면 다음과 같습니다.

연산을 하는 방법 또한 간단합니다. 코드는 순서대로 덧셈, 뺄셈, 곱셈, 나눗셈의 연산자 사용 방법입니다.

<?php
echo 2+2; // 덧셈
echo 2-2; // 뺄셈
echo 2*2; // 곱셈
echo 2/2; // 나눗셈
?>

var_dump를 사용하면 형식에 대해 확인할 수 있습니다.

<?php
var_dump(6);
var_dump(6.5);
?>

위와 같은 형식으로 입력하고 실행시켜보면 6이라는 숫자는 int 형, 6.5라는 숫자는 float 형이라는 것을 알 수 있습니다.

1.2. 문자

문자에 대해 표현할 때는 " " (큰따옴표)' ' (작은따옴표)로 묶어줘야 합니다.

<?php
echo "Hello World";
?>

실행 결과를 화면을 통해 확인하면 다음과 같습니다.

이번에는 1234"1234"라고 입력했을 때, 각 데이터의 형식에 대해 비교해보겠습니다.

<?php
echo var_dump(1234);
echo var_dump("1234");
?>

해당 코드를 실행시켜보면 다음과 같은 결과를 얻을 수 있는데,

""(큰따옴표) 유무에 따라 데이터의 형식이 다르게 출력되는 것을 확인할 수 있습니다.

문자와 문자를 결합하기 위해서는 . (마침표)를 사용해야 합니다.

다음과 같은 형태로 두 문자 사이에 공백까지 포함하여 더해주는 코드를 실행시켜봅시다.

<?php
echo "hello" . " " . "world";
?>

그러면 다음과 같은 결과를 얻을 수 있습니다. 마침표를 사용한다니 특이하네요😲😲

문자 안에서 인용구를 쓰는 방법은 두 가지가 있습니다.

첫 번째는 따옴표를 다르게 사용하는 것이고, 두 번째는 \ (역슬래시)를 사용하는 것입니다.

역슬래시 뒤에 있는 문자는 escaping이라고 해서 문자 그 자체를 인식하게 됩니다.

<?php
echo '그는 "안녕하세요" 라고 말했다.';
echo "그는 \"안녕하세요\" 라고 말했다."
?>

위와 같은 형태로 코드를 실행한 결과, 두 코드 모두 정상적으로 인용구를 만들어주는 것을 확인할 수 있습니다.

 

2. 변수와 상수

2.1 변수

변수는 문자나 숫자 같은 값을 담는 공간이며, 여기에 담긴 값은 다른 값으로 바꿀 수 있습니다.

변수를 선언하기 위해서는 $(달러 기호)를 사용합니다.

$변수 이름 = 초깃값;

다음은 변수에 정수 값 10을 대입하고 화면에 출력하는 코드입니다.

<?php
$var = 10;
echo $var;
?>

해당 코드를 실행시켜보면 다음과 같은 화면을 볼 수 있습니다.

변수는 정수 값뿐만 아니라 실수 값, 문자열도 대입할 수 있습니다. 코드는 다음과 같은 형태로 작성하면 됩니다.

$var = 10;    // 정수값을 대입함
$var = 3.14;  // 실수값을 대입함
$var = "PHP"; // 문자열을 대입함

작성한 변수를 문자열 내에서 사용하면, PHP는 해당 변수에 저장된 값으로 자동 변환해줍니다.

그러나 변수의 이름 뒤에 다른 문자가 오게 되면 해당 변수를 정확하게 인식하지 못하기 때문에

{} (중괄호)로 변수 이름을 감싸서 어디까지가 변수 명인지 확실하게 명시해야 합니다.

<?php
$var = 10;
echo "변수 \$var에 저장된 값은 $var 입니다. </br>";
echo "변수 \$var에 저장된 값은 $var입니다. </br>";
echo "변수 \$var에 저장된 값은 {$var}입니다.";
?>

코드를 실행시켜보면 다음과 같은 결과를 얻을 수 있습니다. 참고로 </br>은 줄 바꿈입니다.

2.1.1 변수명 규칙

  1. 변수의 이름은 영문 대소문자, 숫자, 언더스코어(_)로만 구성됩니다.
  2. 변수의 이름은 숫자와의 구분을 빠르게 하기 위해 숫자로는 시작할 수 없습니다.
  3. 변수의 이름에는 공백이 포함될 수 없습니다.
  4. 변수의 이름으로 PHP에서 미리 정의한 $this는 사용할 수 없습니다.
  5. 변수의 이름은 대소문자를 구분합니다.

2.1.2. 기본 타입

타입 설명
boolean (불리언) true(참)과 false(거짓)으로 표현함.
새보문자를 구분하지 않음.
integer (정수) 부호를 가지는 소수부가 없는 수.
표현 범위는 OS에 따라 달라지며, 64비트 운영체제 기준 -2^63 ~ (2^63 - 1)
float (실수) 소수부나 지수부를 가지는 수.
정수보다 더 넒은 표현 범위를 가짐.
표현 범위는 OS에 따라 달라지지만 대략 ~ 1.8e3-7
미리 정의된 상수인 INF는 무한 이라는 의미이며, 실수의 최대 범위라고 보면 됨.
string (문자열) 일련의 연속된 문자(character)들의 집합.
큰따옴표("")나 작은따옴표('')로 감싸서 표현.
array (배열) 한 쌍의 키(key)와 값(value)으로 이루어진 맵(map)으로 구성되는 순서가 있는 집합.
object (객체) 클래스의 인스턴스(instance)를 저장하기 위한 타입.
프로퍼티(properties)와 메소드(methods)를 포함할 수 있음.
resource (리소스) PHP 외부에 존재하는 외부 자원.
데이터베이스 함수 등에서 데이터베이스 연결 등을 반환할 때 사용.
NULL 오직 한 가지 값 (NULL 상수)만을 가질 수 있는 특별한 타입.
NULL 타입의 변수란 아직 어떠한 값도 대입되지 않은 변수.

2.1.3. 변수명 초기화

PHP에서는 반드시 변수의 선언과 동시에 그 값을 초기화할 필요가 없습니다.

초기화되지 않은 변수는 해당 변수가 참조되거나 사용되는 위치에 따라 다음과 같은 기본값으로 자동 초기화됩니다.

타입 기본값
boolean (불리언) FALSE
integer (정수) 0
float (실수)  0.0
string (문자열) 빈 문자열
array (배열) 빈 배열

2.1.4. 변수 데이터형 검사 및 변경

PHP에서 변수에 담긴 데이터형을 검사할 때는 gettype과 settype을 사용합니다.

<?php
$var = 10;
echo gettype($var);
settype($var, 'double');
echo '<br />'; // 줄바꿈
echo gettype($var);
?>

실제로 코드를 수행한 결과는 다음과 같습니다.

2.1.5. 가변 변수

가변 변수는 변수의 이름을 변수로 변경할 수 있는 기능입니다. 코드를 보는 것이 이해가 더 빠를 것 같네요!

<?php
$var = 'subject';
$$var = 'PHP tutorial';
echo $var;
echo '<br />'; // 줄바꿈
echo $subject;
?>

실제로 코드를 수행한 결과는 다음과 같습니다.

2.2. 상수

상수(constant)는 변하지 않는 값입니다. 그렇기 때문에 어떠한 상황에서도 절대로 변할 수 없습니다.

2.2.1. define() 함수

상수는 define() 함수를 사용하여 선언할 수 있습니다.

define(상수 이름, 상숫값, 대소문자 구분 여부)

처음에 지정한 상수의 값을 변경하려고 하면 어떻게 되는지 한 번 확인해봅시다.

코드를 아래와 같이 작성한 후 실행시켜봅니다.

<?php
define("TITLE", "PHP Tutorial");
echo TITLE;
define("TITLE", "JAVA Tutorial");
echo TITLE;
?>

화면에는 다음과 같이 처음 설정한 상수 값에 대해서만 출력하고, 변경사항에 대해서는 실행하지 않았습니다.

PHP Storm의 실행 로그를 확인해보면 이미 값을 설정했다고 뜨는 것을 확인할 수 있습니다.

2.2.2. 마법 상수 (magic constants)

PHP에는 어떤 스크립트에서도 사용할 수 있는 미리 정의된 다양한 상수인 마법 상수를 제공합니다.

마법 상수는 대소문자를 구분하지 않습니다.

상수 이름 설명
__LINE__ 파일의 현재 줄 번호를 반환함.
__FILE__ 파일의 전체 경로와 이름을 반환함.
include 내부에서 사용할 경우 include된 파일명을 반환함.
__DIR__ 파일의 디렉터리를 반환함.
포함한 파일 안에서 사용할 경우 포함된 파일의 디렉터리를 반환함.
dirname(__FILE__)과 같은 결과를 반환함.
__FUNCTION__ 함수의 이름을 반환함.
__CLASS__ 클래스의 이름을 반환함.
클래스 이름은 대소문자를 구분함.
__TRAIT__ 트레이트(trait)의 이름을 반환함.
트레이트의 이름은 트레이트를 선언한 네임스페이스를 포함함.
* 트레이트는 여러 개의 클래스를 상속받을 수 있는 형태 (정확히는 가져와서 사용하는 형태)
__METHOD__ 클래스의 메소드 이름을 반환함.
__NAMESPACE__ 현재 네임스페이스의 이름을 반환함.

 


🔗Reference

블로그의 정보

개발하는 두부

뚜부니

활동하기