728x90
반응형

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