PHP는 인터프리터 언어예요. 즉, 작성한 코드를 곧바로 실행해요.
PHP 코드 파일은 PHP 코드의 시작을 알리는 여는 태그 <?php를 포함하는 텍스트 파일이에요.
파일에 PHP 코드만 들어 있다면, PHP 코드의 끝을 표시하는 닫는 태그 ?>는 생략할 수 있어요.
PHP 태그에 대해 더 알아보려면 PHP 태그 문서를 참고해요.
<?php
// All PHP code goes here
// No closing tag required at the end
읽기 쉽도록 모든 코드 예제에서는 PHP 여는 태그 <?php를 생략해요.
하지만 모든 PHP 연습 문제에는 이 태그가 들어 있으니, 직접 추가할 필요는 없어요.
할당이나 함수 호출 같은 모든 문은 명령을 구분하기 위해 ;로 끝나야 해요.
;를 생략하면(JavaScript에서처럼) 허용되지 않고 문법 오류가 발생해요.
PHP 문서에서 명령 구분에 대해 더 알아봐요.
$message = "Success!"; // Statement correctly ends with `;`
$message = "I know JavaScript." // PHP Parse error: syntax error, [...]
PHP는 동적 타입 프로그래밍 언어예요.
값의 타입은 프로그램이 실행되는 동안에만 검사해요.
할당 연산자 =를 사용하면 어떤 값 타입이든 어떤 변수 이름에든 할당할 수 있어요.
변수 이름은 달러 $ 기호로 시작해야 해요.
변수에 대해 더 자세히 알아보려면 PHP 변수 문서를 참고해요.
$count = 1; // Assign an integer value of 1
$count = 2; // Re-assign a new value to the variable
$count = false; // You may assign any value type
// Strings can be created by enclosing the characters
// within single `'` quotes or double `"` quotes.
$message = "Success!";
리터럴 값과 변수에 저장된 값을 함수에 전달할 수 있어요. 함수 인자를 정의할 때 전달받은 값을 담을 새 변수가 만들어져요.
// Declare the window_width function
function window_width($width)
{
echo $width; // Access the value passed into the function as $width
// ...
}
window_width(100); // Call the function with the literal value 100
$newWidth = 100;
window_width($newWidth); // Call the function with the value stored in $newWidth
함수는 return 키워드를 사용해 값을 반환할 수 있어요.
반환할 값은 리터럴일 수도, 변수에 저장된 값일 수도, 어떤 명령의 결과일 수도 있어요.
function window_height()
{
$heightOffset = 10;
return 100 + $heightOffset;
}
클래스와 그 인스턴스 안에 있는 함수를 메서드라고 해요.
메서드를 호출할 때는 인스턴스와 ->가 메서드 이름 앞에 와요.
클래스 인스턴스는 new 연산으로 만들어져요.
메서드는 현재 인스턴스를 가리키는 특별한 변수 $this에 접근할 수 있어요.
<?php
// Calculator.php
class Calculator {
// ...
public function sub($x, $y)
{
return $this->add($x, -$y); // Calls the method add() of the current instance
}
public function add($x, $y)
{
return $x + $y;
}
}
$calculator = new Calculator(); // Creates a new instance of Calculator class
$calculator->sub(3, 1); // Calls the method sub() of the instance stored in $calculator
// => 2
함수와 클래스는 이후 연습 문제에서 더 자세히 다뤄요.
가장 기본적인 디버깅 방법으로, 값과 변수의 내용을 출력하면 무슨 일이 일어나는지 이해하는 데 도움이 돼요. PHP에서는 다음과 같이 값을 출력할 수 있어요:
echo $variable; 는 값을 문자열로 표현해서 출력해요print $variable; 는 echo $variable; 와 같아요var_dump($variable); 는 값에 대해 더 자세히, 예를 들어 PHP가 인식하는 타입을 알려줘요echo나 print를 사용할 때 빈 문자열, false, null은 나타나지 않아요.
또 클래스와 인스턴스는 오류를 일으켜요.
이런 값들은 var_dump()로 확인해요.
온라인 에디터에서는 직접 출력한 내용이 테스트 결과와 함께 표시돼요. CLI를 사용할 때는 테스트 요약 전에 진행 표시기와 섞여서 나타나요.
파일은 PHP를 비롯한 많은 언어에서 코드를 구성하는 기본 단위예요. 코드 블록에서 살펴볼 파일의 이름을 보여줄 때는 주석을 사용해요. 이런 주석은 파일에 직접 추가할 필요가 없어요:
<?php
// NameOfPhpFile.php
[...]
코드, 함수, 클래스가 모두 하나의 파일에 있을 수 있어요. 하지만 보통 이런 코드 단위들은 각각 별도의 파일에 있어요.
클래스 이름과 일치하는 파일 이름으로 파일 하나에 클래스 하나를 두는 것이 일반적인 관행이에요.
<?php
// Calculator.php
class Calculator {
// ...
function add($x, $y)
{
return $x + $y;
}
}
함수는 보통 공통된 주제를 설명하는 파일에 함께 모아둬요.
<?php
// window_handling.php
function window_paint()
{
// ...
}
function window_size($width, $height)
{
// ...
}
function window_move($x, $y)
{
// ...
}
그리고 웹 애플리케이션의 진입점으로 흔히 쓰이는 index.php처럼, 바로 실행할 문을 담은 파일도 자주 있어요.
<?php
// index.php
$sum = add(1, 2);
// ...
클래스 이름은 모두 PascalCase여야 해요.
스타일 표준에 따라 변수, 함수, 메서드 이름은 camelCase나 snake_case 중 하나를 써요.
이름에는 문자 a-zA-Z, 숫자 0-9, 밑줄 _이 들어갈 수 있지만 숫자로 시작할 수는 없어요.
한 줄 주석은 //로 시작하고, 텍스트 블록을 /*와 */로 감싸면 여러 줄 주석이 돼요.
// Single-line comment
/*
Multi-line comment
*/