html을 직접 타이핑하여 수동으로 만드는것에 대해 불편함을 느낌
PHP, JSP, ASP, Django, Ruby on Rails, Node.js 와 같은 기술들은 이런 맥락에서 생기게 되었다.
생산성의 한계를 극복하기 위해서 PHP를 사용할 수 있다.
ex) index 파일로 3개의 웹페이지를 보여줌
http://127.0.0.1/idex.php?id=HTML
http://127.0.0.1/idex.php?id=CSS
http://127.0.0.1/idex.php?id=JavaScript
Bitnami wamp 설치경로는 현재 막혀있기 때문에 XAMPP를 사용하여 PHP를 설치해주었음
▲ php 파일을 생성하여 실행까지 마친 상태
index.php일 경우, Web server에서는 php 확장자를 처리해줄 PHP에게 파일을 위임해준다.
PHP는 받은 파일을 통해 처리를 해준 후 다시 Web server에게 넘겨준다.
(예시 코드)
<!doctype html>
<html>
<body>
2018-01-20 18:36:01
</body>
</html>
<!doctype html>
<html>
<body>
<?php
echo date('Y-m-d H:i:s');
?>
</body>
</html>
두 개의 코드를 비교하여 실행해보면
첫 번째는 2018-01-20 18:36:01 이라는 텍스트가 고정되어 출력될 뿐이지만
두 번째는 새로고침을 할 때마다 현 시각으로 다시 초기화하여 출력해준다.
(하지만 막상 php를 실행해서 돌린 후, 나온 결과물에 대해서 코드를 뜯어보면
php 문법은 온데간데없고 html만 나올 뿐이다. 이미 처리를 해서 나온 결과물의 html이기 때문이다.
👉 php의 모든 코드는 최종적으로 사라진다.)
여기서 html은 정적이지만 php는 동적이라는 것을 알 수 있다.
데이터의 형식에 무관하게 화면에 출력하기 위한 방식은 echo가 있다.
php는 하나의 구문이 끝나면 반드시 세미콜론을 찍어줘야한다.
$로 시작하는것은 변수선언을 뜻한다
php에 입력을 주고싶다면 php 다음에 물음표를 삽입해주어 값을 할당한다.
ex) .php?name=engoing
name이라는 값에 engoging이라는 문자를 할당해준다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
안녕하세요. <?php echo $_GET['address']; ?>에 사시는 <?php echo $_GET['name']; ?>님
</body>
</html>
위의 코드처럼 address, name 등 변수가 여러개라면 구분자가 필요하게 된다. 여기선 구분자를 '&'로 나타낸다. 그러므로 위 코드에선 .php?name=engoing&address=Seoul 형태의 주소를 입력해야한다.
.php?id가 무엇이냐에 따라 사용되는 내용도 달라지게 코드를 짜주고싶다면 echo file_get_content 함수를 사용한다. 디렉토리 위치를 함수 안에 넣어주어 그 안에 있는 코드를 가져올 수 있도록한다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>WEB</h1>
<ol>
<li><a href="index.php?id=HTML">HTML</a></li>
<li><a href="index.php?id=CSS">CSS</a></li>
<li><a href="index.php?id=JavaScript">JavaScript</a></li>
</ol>
<h2>
<?php
echo $_GET['id'];
?>
</h2>
<?php
echo file_get_contents("data/".$_GET['id']);
?>
</body>
</html>
여기서 echo file_get_contents("data/".$_GET['id']) 보안적으로 좋지 않은 코드라 실제 개발할때는 사용하지않기를 권고한다고 한다.
(+) var_dump 함수는 변수에 대한 정보를 반환하는 기능을 가진다.
// 예제 코드
<?php
var_dump(1==1);
?>
php에서의 if문은 c언어의 if문 형식과 유사하다
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>Conditional</h1>
<h2>if</h2>
<?php
echo '1<br>';
if(false) {
echo '2-1<br>';
} else {
echo '2-2<br>';
}
echo '3<br>';
?>
</body>
</html>
이를 활용하여 id값이 없을 경우 다른 내용을 출력하는 코드를 만들면 다음과 같다
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1><a href="index.php">WEB</a></h1>
<ol>
<li><a href="index.php?id=HTML">HTML</a></li>
<li><a href="index.php?id=CSS">CSS</a></li>
<li><a href="index.php?id=JavaScript">JavaScript</a></li>
</ol>
<h2>
<?php
if(isset($_GET['id'])){
echo $_GET['id'];
} else {
echo "Welcome";
}
?>
</h2>
<?php
if(isset($_GET['id'])){
echo file_get_contents("data/".$_GET['id']);
} else {
echo "Hello, PHP";
}
?>
</body>
</html>