https://www.youtube.com/watch?v=OK_JCtrrv-c
4시간 36분짜리...
php는 웹 서버에서만 동작하기 때문에 먼저 웹서버(Apache2, php)를 설치하고 해야한다 (html처럼 그냥 안열림)
2020.04.05 - php 강좌 듣기1
Hello World
모든 언어에서의 시작이자 국룰인 Hello world
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8" />
<title>Website</title>
</head>
<body>
<?php
echo("Hello World");
?>
</body>
</html>
파일이름은 index.php, 저장 경로는 C:\Apache24\htdocs (아파치 설치폴더의 htdocs)
<?php ?> 안의 코드는 php로 해석됨
echo는 print와 같은 뜻
주소창에 localhost/index.php를 치면 아래 사진와 같이 나온다
Writing HTML
우리가 작성한 코드와 다르게 localhost/index.php의 페이지 소스를 뜯어보면(Ctrl + U, 크롬기준)
php코드는 없고 html 코드만 나온다
echo라는 함수는 ""안의 것을 그대로 html에 넣는 것이다
<body>
<?php
echo "<h1>Hello World</h1>";
echo "<hr/>";
echo "<p>This is my site</p>";
?>
</body>
이렇게 작성한다면 아래 사진처럼 나온다
Variables
echo "There once was a man named John <br/>";
echo "He was 70 years old <br/>";
echo "He really liked the name George <br/>";
echo "But didn't like being 70<br/>"
이 이야기의 John이라는 이름이나 70이라는 나이를 변수로 만들어서 바꿀 수 있게 한다
php는 변수를 만들 때 변수이름 앞에 $를 붙인다
$name = "John";
$age = 35;
$name를 그대로 echo의 " " 안에 넣어주기만 하면 된다.
echo "There once was a man named $name <br/>";
만약 같은 변수 이름을 만든다면 아래의 내용은 그 변수를 따라간다 (python과 같이)
$name = "George";
$age = 35;
echo "There once was a man named $name <br/>";
echo "He was $age years old <br/>";
$name = "Mike";
echo "He really liked the name $name <br/>";
echo "But didn't like being $age <br/>"
Data Types
파이썬과 매우 흡사한것 같다
" " 는 문자열(String)
int와 float를 구분할 필요없음
true나 false로 bool타입도 가능
$phrase = "To be or not to be";
$age = 30;
$gpa = 30.2;
$isMale = false;
변수만 echo할때는 ""가 필요없는 듯하다
Working With Strings
Working With Numbers
파이썬이랑 비슷하고 굳이 쓸 경우 없는 것들
나중에 필요할 때 찾아서 하는게 훨씬 좋음
귀찮아서 스킵
Getting User Input
html과 연계하여 사용자의 입력을 받음
<body>
<form action="index.php" method="get">
Name: <input type="text" name="name">
<br>
Age: <input type="number" name="age">
<br>
<input type="submit">
</form>
<br/>
<?php
echo $_GET["name"]
echo $_GET["age"]
?>
</body>
<form action="동작을 수행할 php파일" method="get">
<input type="입력변수형" name="php에서 쓸 변수이름">
<input type="submit> 제출 버튼을 만듦 -> 동작을 수행할 php파일에 전송
$_GET["html에서 썼던 변수이름"] -> html에서 입력받은 입력값을 가져옴
$data = $_GET[""]같은 식으로 php 변수에 넣을 수도 있음
Building a Basic Calculator
Building a Mad Libs Game
그냥 input의 간단한 응용이니 스킵
URL Paramaters
Getting User Input의 코드를 실행시키면 url이 바뀌는것을 볼 수 있다
php? 뒤로 name=과 age=가 그대로 나오고 있다
그냥 그렇다고...
POST vs GET
<form>태그의 method에는 get과 post가 들어갈 수 있는데
만약 get을 비밀번호에 쓴다면 url에 비밀번호가 보여진다...
하지만 post를 쓴다면 url에 안보인다 (php안의 $_GET도 $_POST로 바꿔야함)
비밀번호같이 보이면 안되는 것들은 post로 받아와야 한다
Arrays
그냥 배열이다
$friends = array("Kevin", "Karen", "Oscar", "Jim");
배열 안에는 어떤 변수형이든 들어갈 수 있다
Oweb 프로젝트에는 딱히 필요 없을 것같아 대충 스킵
Using Checkboxes
매우매우 필요함
<form action="index.php" method="post">
Apples: <input type="checkbox" name="fruits[]" value="apples"><br>
Orange: <input type="checkbox" name="fruits[]" value="oranges"><br>
Pears: <input type="checkbox" name="fruits[]" value="pears"><br>
<input type="submit">
</form>
<?php
$fruits = $_POST["fruits"];
for($cnt=0; $cnt<=count($fruits); $cnt++)
{
echo $fruits[$cnt];
echo " ";
}
?>
<input>안의 value는 이 입력을 전달했을 때 무엇으로 할것인가(이름)을 정한다
count($array)는 배열 안의 값의 수를 반환함
for문을 이용해 체크된 모든 값을 print함
Associative Arrays
<?php
$grades = array("Jim"=>"A+", "Pam"=>"B-", "Oscar"=>"C+");
echo $grades["Jim"];
?>
=>를 통해 연결된 배열의 값을 불러올 수 있음
2020.04.07 - php 강좌 듣기2
Function
함수 - 코드를 저장해둔 상자
함수를 선언(정의)한 뒤 함수를 사용한다 (함수 정의는 다른 <?php ?>에 해도 사용할 수 있다)
<?php
function sayHi()
{
echo "Hello User";
}
sayHi();
?>
반복해서 사용하는 긴 코드를 함수로 만들어서 간편하게 사용할 수 있다
매개변수는 함수 내에서 사용할 변수를 받아오는 것으로 입력받은 값을 사용할 수 있다
<?php
function sayHi($name)
{
echo "Hello $name";
}
sayHi("Mike");
?>
위 코드를 변형하면 사용자의 입력을 받아서 함수에 넣을 수 있다
Return Statements
return은 함수에서 반환하는 값으로 계산 값이나 변수 등을 반환한다
코드를 실행하는게 아니라 값으로 나오는 함수라고 생각하면 된다 (수학에서의 함수와 비슷)
<?php
function cube($num)
{
return $num * $num * $num;
}
$cubeResult = cube(4);
echo $cubeResult;
?>
위 코드를 실행하면 64(4*4*4)가 출력된다
return 뒤에 뭐 없이 쓰면 안에 있는 코드를 반환한다 (그냥 함수와 비슷)
If Statements
조건문 - 프로그래밍에서 매우 중요한 문법 중 하나
만약(if), 아니면 만약(else if), 아니면(else)
다른 언어들과 다를게 없기에 설명은 스킵
Building a Better Calculator
저번 글에서 더하기만 했던 계산기를 조건문을 이용해 사칙연산을 해보자
<form action="index.php" method="post">
First Num: <input type="number" name="num1"> <br>
OP: <input type="text" name="op"><br>
Second Num: <input type="number" name="num2"> <br>
<input type="submit">
</form>
<?php
$num1 = $_POST["num1"];
$num2 = $_POST["num2"];
$op = $_POST["op"];
if($op == "+")
{
echo $num1 + $num2;
}
elseif($op == "-")
{
echo $num1 - $num2;
}
elseif($op == "*")
{
echo $num1 * $num2;
}
elseif($op == "/")
{
echo $num1 / $num2;
}
else
{
echo "Invalid Operator";
}
?>
Switch Statements
다른 언어랑 똑같은 방법이니 스킵
Loops
반복문 - 조건문과 함께 매우 중요한 문법 중 하나
얘도 다른 언어와 똑같지만 설명함
while 반복문
<?php
$index = 1;
while($index <= 5)
{
echo "$index <br>";
$index++;
}
?>
while()안의 조건을 만족하는 동안 반복함
비슷한걸로 do-while문이 있는데 이건 일단 한번 실행한 후 조건을 확인한다
<?php
$index = 6;
do
{
echo "$index <br>";
$index++;
}while($index <= 5)
?>
처음 한번은 조건을 만족하지 않아도 코드를 실행한다
for반복분
<?php
for($i = 1; $i<=5; i++)
{
echo "$i <br>";
}
?>
위의 while문과 같은 동작을 하지만 괄호안에서 조건을 모두 해결한다는 점에서 좀 더 직관적이다
개인적으로 while보다 선호하는 편
Comments
주석 // 또는 /* */으로 처리함
Including HTML
HTML을 함수처럼 불러와서 사용한다
<?php
include "header.html
?>
//header.html
<h1>My Website</h1>
<hr />
<h3>Thanks for visitings</h3>
header.html안의 내용이 php를 통해 표시된다
Including PHP
반대로 php를 불러와서 사용할 수도 있다
//article.php
<h2><?php echo $title; ?></h2>
<h4><?php echo $author; ?></h4>
word count: <?php echo $wordCount;?>
<?php
$title = "My Post";
$author = "Mike";
$wordCount = 400;
include "article.php"
?>
함수만 저장하는 php파일을 따로 만들어서 include하면 훨씬 정리된 코드를 짤 수 있다
Classes & Obejcts
좀 어려운 개념이 등장했다
간단하게 말해서 변수를 담는 변수이다 (배열과는 다르다)
클래스와 오브젝트에 대한 글은 나중에 따로
<?php
class Book{
var $title;
var $author;
var $pages;
}
$book1 = new Book;
$book1->title = "Harry Potter";
$book1->author = "JK Rowling";
$book1->pages = 400;
echo $book1->title;
?>
변수에 클래스를 담았을 때($book1 = new Book;) 그 변수를 오브젝트라고 한다
Constructors
클래스의 변수 할당을 간편하게 해주는 함수를 만든다
<?php
class Book{
var $title;
var $author;
var $pages;
function __construct($aTitle, $aAuthor, $aPages)
{
$this->title = $aTitle;
$this->author = $aAuthor;
$this->pages = $aPages;
}
}
$book1 = new Book("Harry Potter", "JK Rowling", 400);
echo $book1->title;
?>
__contruct함수를 통해서 Classes&Objects에서 하나하나 정했던 변수를 한번에 정의했다
$this는 그 클래스를 말한다
var 대신 public를 사용하면 클래스 밖에서도 변수를 수정할 수 있게 된다
반대로 private를 사용하면 수정할 수 없게 된다
Object Functions
class 안의 함수를 사용할려면
$object->function(); 으로 사용하면 된다
<?php
class Student{
var $name;
var $major;
var $gpa;
function __construct($name, $major, $gpa)
{
$this->name = $name;
$this->major = $major;
$this->gpa = $gpa;
}
function hasHonors()
{
if($this->gpa >= 3.5)
{
return "true";
}
return "false";
}
}
$student1 = new Student("Jim", "Business", 2.8);
$student2 = new Student("Pam", "Art", 3.6);
echo $student1->hasHonors();
?>
만약 클래스에서 변수를 private로 선언했다면 클래스 안에서 함수를 만들어 반환하게 만들어야 한다
(echo $student->$gpa가 안됨)
function getGpa($gpa)
{
return $tihs->gpa;
}
echo $student->getGpa();
Inheritance
별 쓸모 없을것 같아 스킵
'작업일지 > Web' 카테고리의 다른 글
티스토리 하이퍼링크 색깔 바꾸기 (0) | 2022.05.02 |
---|---|
MySQL 기본적인 명령어들 정리 (0) | 2020.04.11 |
html 다시 공부 (0) | 2020.04.04 |
웹 서버 구축 (2) | 2020.04.03 |