00 - 환경
PHP 7.4.21
VC15 x65 Thread Safe
제어판 - 고급 시스템 설정 - 환경 설정 - 새로만들기 - 경로 복사
찾기 - EXTENSIONS

MySQL
MySQL Community 버전
vs code 디버그 설정
extension - php Extension Pack 설치, php Debug - php 74.vc15 TS

phpinfo();
echo "Hello, world";
php -S localhost:8080
run - add configuration
Launch Currently
php에서 주석치는 방법
1. //
2. #
echo -> echo 'Hello, world';
print -> print
exit; : 아래 있는 것은 실행이 안되고 중단
html 템플릿
html
php -S localhost:8080 -t lang/BasicSyntax/HtmlTemplate/
03 - 자료형(Types)
작은따옴표 뿐 만 아니라 큰 따옴표도 사용 가능
/**
var_dump(string) false // -"1"

null로는 타입캐스팅 불가능

(int)


04 - 자료형(Types)
배열도 값의 일종
$messages = [
'hello world',
'who are you?,
'bye'
];

/**


delete
-> unset($messages[3]);
$messages = [
'Hello, world'
];
05 - 변수(Variables)
: 값을 담는 메모리에 대한 공간

변수를 사용하는 방법
echo $message;
echo "The message is {$message}";
unset($message);
$varName = 'message'
varName = 'Hello. world'; 또는 ${varName} = 'Hello, world';
echo $message;
06 - 상수(Constants)
한번 지정하면 변하지 않음
const CONSTANT = "Hello world';
var_dump(CONSTANT);
const CONSTANT = [
'message' => 'Hello, world'
];
define('CONSTANT', Hello, world');
CONSTANT = 'Who are you?'; 수정x
var_dump(CONSTANT);
Magic Constants
echoDIR;
07 - 연산자 (Operators) 다시★
String Operators
'Hello'. 'world';
. -> 문자 연결
$message = null;
echo $message ??
var_dump(!true); -> false
var_dump( 10<->20); //false
08- 연산자 ( Operators)
Arihmetic Operators
2 + 2;
17 - 3.5;
10 / 3;
6 * 9;
4 % 3;
2 ** 4;
Incrementing/Decrementing Operators
$count = 0;
$count = $count =1;
count;
// echo $count++;
count = count +=1; // -> 1
message .= 'world';
echo $message; //-> Hello, world
비교연산자 > 논리연산자
true && 10 < 20 == true 10 > 20;
조건문 if else
if(true) {
echo 'Hello, world';
}
if(true) {
echo 'Hello, world';
}else {
echo 'Bye';
}
if(false) {
echo 'Hello, world';
} elseif(true) {
echo 'who are you?';
} else {
echo 'Bye';
}
10 - 반복문 (for, foreach) (1)
for($i -1; $i < 10; $i++) {
echo $i;
}
$messages = [
'Hello, world',
'who are you?'
'Bye'
];
for (i= 0; $i < count(messages); i++) { echo $messages[i]. PHP_EOL;
}
PHP_EOL; -> Enter처리

11 - 반복문 (while, do ~ while) (2)
1) while

2) do ~ while

12 - 함수
프로그램을 구성하는 단위
작은 코드의 집합
증복을 제거
arguemnt 다시★

13 - 함수 (2) 다시★

함수는 리턴하면 끝
first class function
함수를 값으로도 담을 수 있음
$foo = function () {
return 'Hello, world';
};
echo $foo();
function foo($callback)
{
$callback();
}
foo(
function() {
return 'Hello, world';
}
);
function foo2() {
return function () {
return 'Hello, world';
};
}
$func = foo2();
echo $func();
higher-order function
14 - 함수 (3)
Variable Scope


함수 호출이 끝나면 local 변수, 밖에 있는 것을 Global변수라고 한다.
Clousre

ConstantsScope
function foo()
{
define('MESSAGE', 'Hello, world');
const MESSAGE = 'Hello, world');
}
foo();
echo MESSAGE; // -> Hello, world
echo $foo();

15 - 코드 분할(include, require)
파일을 나눠서 작성하는 방법

include
include 언어구조는 여러 개의 php 문서가 있을 때, 소스코드를 포함시킬 때 사용
대부분은 상대경로를 사용
php.ini 설정을 바꾸면 URL 형태로도 포함시킬 수 있으나 보안의 측면에서는 좋지 않음
문맥과 스코프를 동일하게 가져갈 수 있고 함수 내부에서 포함시키면 스코프는 함수
include_once
_once 가 붙으면 해당 파일을 한번만 포함시킨다.즉 평범하게 include를 사용하면 여러번 포함시킬 수 있음. 따라서 중복으로 포함되는 경우를 막을 때 사용
include_once 'HelloWorld.php';
require
require 언어 구조 또한 include처럼 파일을 포함시킬 때 사용 차이점은 include는 파일을 포함시키지 못할 경우 경고만 던지는 반면 require는 반드시 있어야하므로 에러를 던지게 됩니다.
require_once
include_once 와 마찬가지로 파일을 한번만 포함

어떤 문서를 include 또는 require 를 하면 그쪽으로 문서를 포함시킴
return [
'message' => $message
포함하는 쪽으로 값을 넘겨줄 수 있음


message라는 키, message라는 변수