laravel 로 배우는 서버사이드 #3

66
Laravel 로 배우는 서버사이드 #3 PHP 문법, View, Template, Request, Session ABCD, SNOWKIWI / 한성일

Upload: -

Post on 07-Jan-2017

1.085 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Laravel 로 배우는 서버사이드 #3

Laravel�로�배우는�서버사이드�#3PHP�문법,�View,�Template,�Request,�Session

ABCD,�SNOWKIWI�/�한성일

Page 2: Laravel 로 배우는 서버사이드 #3

0. PHP 기본 문법 (라라벨로)

http://php.net/manual/kr/langref.php

Page 3: Laravel 로 배우는 서버사이드 #3

PHPController 생성

php�artisan�make:controller�PHPController

콘솔 홈 디렉토리로 이동1

2

PHP 테스트를 위해..

기본 메서드 삭제 (깔끔하게)3

<?php�…�class�PHPController�extends�Controller�{���//��이부분�삭제�}

Page 4: Laravel 로 배우는 서버사이드 #3

1. 변수

Page 5: Laravel 로 배우는 서버사이드 #3

변수와 함수

“내가 이름 지어주기 전에는 그는 다만 메모리 주소에 지나지 않았다.”

- 변수

“돈을 넣으면 캔이 나온다.” - 함수

Page 6: Laravel 로 배우는 서버사이드 #3

변수 (Variable)

값을 담는 그릇

Page 7: Laravel 로 배우는 서버사이드 #3

변수 (Variable)

$a�=�0;

0X3213…….

0을 저장합니다.

Page 8: Laravel 로 배우는 서버사이드 #3

변수 (Variable)

기본 $변수명�=�대입값�;

메모리에 값을 저장합니다. 변수는 프로그램이 종료하거나 강제로 해제하기 전까지 메모리에 상주합니다.

숫자형 (Integer)

$x�=�5;�$y�=�10;�echo(x+y);

문자형 (String)

$last_name�=�“Johnson";�echo($last_name);

불형 (Boolean)

$is_running�=�true;����//�참�$is_running1�=�false;��//�거짓�echo($is_running1);

값 대입방법

Page 9: Laravel 로 배우는 서버사이드 #3

변수 (Variable)

$var1�=�“문자형”;�$var2�=�0;��������//�숫자형�$var3�=�true;����//�or�false�Bool형�

PHP에서는 변수의 데이터 타입을 정할 필요가 없다. 변수의 타입은 처음 들어간 값으로 설정 된다.

Page 10: Laravel 로 배우는 서버사이드 #3

변수 실습 1

Route::get('/php/variable',�'PHPController@testVariable');

Routes.php1

Page 11: Laravel 로 배우는 서버사이드 #3

변수 실습 2

�public�function�testVariable(){���������$var_string�=�"문자타입";���������echo�$var_string;���������echo�'<br/>';�

��������echo�'문자열�연결�'�.�$var_string;���������echo�'<br/>';�

��������$var_integer�=�10000;���������echo�$var_integer;���������echo�'<br/>';�

��������echo�'연산�<br/>';���������$result1�=�$var_integer�+�100;���������$result2�=�$var_integer�-�100;���������$result3�=�$var_integer�*�100;���������$result4�=�$var_integer�/�100;���������echo�$result1;���������echo�'<br/>';���������echo�$result2;���������echo�'<br/>';���������echo�$result3;���������echo�'<br/>';���������echo�$result4;���������echo�'<br/>';

��������$var_float�=�1.5;���������echo�$var_float;���������echo�'<br/>';�

��������echo�'연산�<br/>';���������$result1�=�$var_float�/�1.5;���������echo�$result1;���������echo�'<br/>';�

��������$var_boolean�=�true;���������echo�$var_boolean�?�'참'�:�'거짓';���������echo�'<br/>';�����}

다 이어서 작성

2 PHPController.php

Page 12: Laravel 로 배우는 서버사이드 #3

변수 실습 3

3 http://localhost/php/variable

Page 13: Laravel 로 배우는 서버사이드 #3

2. 함수

Page 14: Laravel 로 배우는 서버사이드 #3

함수 (Function)

지정된 기능을 수행 동일한 작업을 수행 반복작업에 유용

Page 15: Laravel 로 배우는 서버사이드 #3

Helper 클래스 생성app/Providers/AppServiceProvider.php��

파일 수정

����public�function�register()�����{���������foreach�(glob(app_path().'/Helpers/*.php')�as�$filename){�������������require_once($filename);���������}�����}

app/Helpers/helper.php Helpers 디렉토리와 파일 추가

����function�add($a,�$b)�����{���������$c�=�$a�+�$b;���������return�$c;�����}

1

2

Page 16: Laravel 로 배우는 서버사이드 #3

Helper 등록 이유

Laravel의 컨트롤러는 제약이 있기에 Helper를 구성 어떤 곳에서도 접근 add() 함수에 접근 가능 사용자가 만드는 함수 저장 (반복사용, 유틸리티) 뷰에서도 접근 가능

정식 메뉴얼에는 없음

Page 17: Laravel 로 배우는 서버사이드 #3

함수 실습 1

3

Route::get('/php/function',�'PHPController@testFunction');

4

����public�function�testFunction()�{���������echo�add(5,�10);�����}

http://localhost/php/function5

Routes.php

PHPController.php

Page 18: Laravel 로 배우는 서버사이드 #3

3. 배열

Page 19: Laravel 로 배우는 서버사이드 #3

배열

값을 담을 수 있는 변수가 여러개 모여있음 아이스큐브

Page 20: Laravel 로 배우는 서버사이드 #3

배열 실습 1

Route::get('/php/array',�'PHPController@testArray');

����public�function�testArray(){���������$array�=�array(�������������"key1"����=>�"a",�������������"key2"��=>�"b",�������������"key3"��=>�"c",�������������"key4"�=>�"d",���������);���������foreach�($array�as�$value)�{�������������echo�$value;���������}�����}

Routes.php1

PHPController.php2

Page 21: Laravel 로 배우는 서버사이드 #3

배열 실습2

http://localhost/php/array3

Page 22: Laravel 로 배우는 서버사이드 #3

4. 제어문

Page 23: Laravel 로 배우는 서버사이드 #3

제어문

조건

YES

NO

조건

NO

YES

탕수육?

각각의 조건에 맞게 분기 실행

배가고프다.

Page 24: Laravel 로 배우는 서버사이드 #3

조건 연산자

연산자 설명

X�==�Y X는�Y와�같다

X�!=�Y X와�Y는�값이�같지�않다

X�<�Y X는�Y보다�작다

X�<=�Y X는�Y보다�작거나�같다

X�>�Y X는�Y보다�크다

X�>=�Y X는�Y보다�크거나�같다

Page 25: Laravel 로 배우는 서버사이드 #3

Else - If

$name�=�“jerry”;�� � � � �

if�(�$name�==�“tom”�){� � � � � //�만약�이름이�“tom”�이라면�

� echo(“안녕�탐”);�� //�tom�출력�

}�else�if�(�$name�==�“jerry”�){�//�이름이��jerry�라면�

� echo(“안녕�제리”);�� //�jerry�출력�}�else�{� � � � � � � � � � � //�둘다�아니면�� echo(“누구냐�넌?”);�}�� �

1

2

3

빠져나온다.

Page 26: Laravel 로 배우는 서버사이드 #3

제어문 실습 1

Route::get('/php/control',�'PHPController@testControl');

1 Routes.php

Page 27: Laravel 로 배우는 서버사이드 #3

제어문 실습 2���public�function�testControl()�{���������$a�=�1;���������$b�=�2;�

��������if�($a�<�$b)�{�������������echo�$b�.�"가�큽니다.�<br/>";���������}�

��������$c�=�"abc";���������$d�=�"bcd";���������if�($c�!=�$d)�{�������������echo�"같지�않습니다.�<br/>";���������}�

��������$c�=�"abc";���������$d�=�"abc";���������if�($c�==�$d)�{�������������echo�"같습니다.�<br/>";���������}�

��������if�($c�!=�$d)�{�������������echo�"같지�않습니다.�<br/>";���������}�else�if�($c�==�$d)��{�������������echo�"같습니다.�<br/>";���������}�����}

PHPController.php2

Page 28: Laravel 로 배우는 서버사이드 #3

제어문 실습 3

http://localhost/php/control3

Page 29: Laravel 로 배우는 서버사이드 #3

5. 반복문

Page 30: Laravel 로 배우는 서버사이드 #3

반복문

끝내지 않으면 무한반복된다.

Page 31: Laravel 로 배우는 서버사이드 #3

반복문 실습 1

Route::get('/php/loop',�'PHPController@testLoop');

1 Routes.php

Page 32: Laravel 로 배우는 서버사이드 #3

반복문 실습 2

����public�function�testLoop(){���������for�($i�=�1;�$i�<�10;�$i++)�{�������������echo�$i;���������}�

��������echo�"<br/>";���������$array�=�array(�������������"key1"����=>�"a",�������������"key2"��=>�"b",�������������"key3"��=>�"c",�������������"key4"�=>�"d",���������);���������foreach�($array�as�$item)�{�������������echo�$item;���������}�����}

PHPController.php2

Page 33: Laravel 로 배우는 서버사이드 #3

반복문 실습 3

3 http://localhost/php/loop

Page 34: Laravel 로 배우는 서버사이드 #3

흐름

for�($i=0;�$i<3;�$i++)�{�� �

� echo(i.”번째�hello”);�� //�실행될�문장�}

1 2

34

5

1. 변수(i)에 0을 대입해라. 2. i 가 3보다 작으면 3. hello 를 출력해라. 4. i 를 1증가(i++) 시켜라. (i는1) 5. 증가된 i 가 3보다 작으면 6, hello 를 출력해라. ..... 여기서는 i 가 3보다 작을 동안 계속 돈다. 3보다 커지면 빠져 나온다.

Page 35: Laravel 로 배우는 서버사이드 #3

6. 주석

Page 36: Laravel 로 배우는 서버사이드 #3

주석

/* */

����public�function�testLoop(){���������…���������foreach�($array�as�$item)�{���������//�루프를�돕니다.���������/*����������잘���������도����������나���������요���������*/�������������echo�$item;���������}�����}

// 한줄주석

여러줄 주석(블록)

반복문 실습에 추가해 봅시다.

Page 37: Laravel 로 배우는 서버사이드 #3

주석

소스상에 있지만 실행되지 않으며 내가 나에게 힌트를 주거나 다른 개발자에게 힌트를 줍니다.

Page 38: Laravel 로 배우는 서버사이드 #3

7. 뷰

Page 39: Laravel 로 배우는 서버사이드 #3

뷰 실습 1

Route::get('/test/view-route/',�function()�{�����return�view('test.message',�['message'�=>�'Routes.php�에서�직접�수행']);�});

resources/views/test/message.php

1 Routes.php

2

3 http://localhost/test/view-route

이미 파일 생성 되어 있음

Page 40: Laravel 로 배우는 서버사이드 #3

뷰 실습 2 - 1

Route::get('/test/view-test/board',�'TestController@sendData');

���public�function�sendData()�{���������$data�=�array(�������������"id1"��=>�'첫번째�데이터',�������������"id2"�=>�'두번째�데이터',�������������"id3"�=>�'세번째�데이터',���������);�

��������return�view('test.board',�$data);�����}

1 Routes.php

2 TestController.php

Page 41: Laravel 로 배우는 서버사이드 #3

뷰 실습 2 - 2

resources/views/test/board.php�파일 추가

<!DOCTYPE�html>�<html>�<head>�����<title>게시판</title>�</head>�<body>�����<h1>게시판</h1>�����<p>�<?=�$id1�?>�</p>�����<p>�<?=�$id2�?>�</p>�����<p>�<?=�$id3�?>�</p>�</body>�</html>

3

Page 42: Laravel 로 배우는 서버사이드 #3

뷰 실습 2 - 3

http://localhost/test/view-test/board4

Page 43: Laravel 로 배우는 서버사이드 #3

8. 템플릿 (Template)

Page 44: Laravel 로 배우는 서버사이드 #3

템플릿

바뀌지 않는 부분을 템플릿 화하고 바뀌는 부분만 교체

바뀌는 부분

Page 45: Laravel 로 배우는 서버사이드 #3

템플릿

템플릿 뷰는

default.blade.php�

.blade 형태로 resources/views 폴더에 위치해야 함

Page 46: Laravel 로 배우는 서버사이드 #3

템플릿 실습 1

resources/views/layout/default.blade.php�폴더와 파일 추가

<!DOCTYPE�html>�<html>�<head>�����<title>템플릿�테스트</title>�</head>�<body>�<div�class="container">�����<header>�@include('layout.header')�</header>�����<div�class="sidebar">�@include('layout.sidebar')�</div>�����<div�class="contents">�@yield('content')�</div>�����<footer>�@include('layout.footer')�</footer>�</div>�</body>�</html>�

1

Page 47: Laravel 로 배우는 서버사이드 #3

템플릿 실습 2

resources/views/layout/footer.blade.php�파일 추가

<div>풋터�영역</div>

2

Page 48: Laravel 로 배우는 서버사이드 #3

템플릿 실습 3

resources/views/layout/header.blade.php�파일 추가

<ul>�����<li><a�href="{{URL::to('/layout/home')}}">Home</a></li>�����<li><a�href="{{URL::to('/layout/about')}}">About</a></li>�</ul>

3

Page 49: Laravel 로 배우는 서버사이드 #3

템플릿 실습 4

resources/views/layout/sidebar.blade.php�파일 추가

<div>사이드바�영역</div>

4

Page 50: Laravel 로 배우는 서버사이드 #3

템플릿 실습 5

Route::get('/layout/home',�function()�{�����return�View::make('pages.home');�});�Route::get('/layout/about',�function()�{�����return�View::make('pages.about');�});

5 Routes.php

Page 51: Laravel 로 배우는 서버사이드 #3

템플릿 실습 6

resources/views/pages/about.blade.php

@extends('layout.default')�@section('content')�����-�About�페이지�@stop

6

Page 52: Laravel 로 배우는 서버사이드 #3

템플릿 실습 7

resources/views/pages/home.blade.php�폴더와 파일 추가

@extends('layout.default')�@section('content')�����-�Home�페이지�@stop

7

Page 53: Laravel 로 배우는 서버사이드 #3

템플릿 실습 8

http://localhost/layout/home6

Page 54: Laravel 로 배우는 서버사이드 #3

@include : 페이지를 마스터템플릿에 포함 @yield : 교체영역 @section … @stop : 교체영역

템플릿에서는 PHP 데이터에

{{ 변수명 or 함수명 }}�과 같이 접근

Page 55: Laravel 로 배우는 서버사이드 #3

9. Request

Page 56: Laravel 로 배우는 서버사이드 #3

인터넷

Request

Request

Response

서버클라이언트

GET, POST방식을 가장 많이 사용합니다.

Page 57: Laravel 로 배우는 서버사이드 #3

Request 실습 1

Route::get('/test/request-view',�function()�{�����return�View::make('test.request');�});

1 Routes.php

Route::get('/test/request',�'TestController@testRequest');

Page 58: Laravel 로 배우는 서버사이드 #3

Request 실습 2

resources/views/test/request.php

<!DOCTYPE�html>�<html>�<head>�����<title>요청�테스트</title>�</head>�<body>�<form�name="test_form"�action="/test/request">�����<div></div><input�type="text"�name="first_name"�placeholder="first�name"></div>�����<div></div><input�type="text"�name="last_name"�placeholder="last�name"></div>�����<div></div><input�type="submit"�/></div>�</form>�</body>�</html>

2

Page 59: Laravel 로 배우는 서버사이드 #3

Request 실습 3

����public�function�testRequest(Request�$request)�{���������echo�'first_name�은�'�.�$request->input('first_name');���������echo�'<br�/>';���������echo�'last_name�은�'�.�$request->input('last_name');�����}

TestController.php

use�Illuminate\Http\Request;

3

상단에 use 라인 추가

Page 60: Laravel 로 배우는 서버사이드 #3

Request 실습 3

4 http://localhost/test/request-view

Page 61: Laravel 로 배우는 서버사이드 #3

10. 세션

Page 62: Laravel 로 배우는 서버사이드 #3

Session

구글에 로그인 되어있으면 창을 완전히 닫거나 로그아웃이 전까지 계속 로그인 되어있는 상태유지

상태유지를 위해 세션(Session)을 사용

Page 63: Laravel 로 배우는 서버사이드 #3

세션 실습 1

Route::get('/test/session/put',�'TestController@storeSession');�Route::get('/test/session/get',�'TestController@getSession');�Route::get('/test/session/flush',�'testController@flushSession');

1 Routes.php

Page 64: Laravel 로 배우는 서버사이드 #3

세션 실습 2

����public�function�storeSession(Request�$request)�{���������$request->session()->put('login',�'로그인되어있음');���������echo�"로그인�완료";�����}�

����public�function�getSession(Request�$request)�{���������$value�=�$request->session()->get('login',�'로그인되어있지않음');���������//�login�변수가�없다면�‘로그인되어있지않음'�를�출력한다.�

echo�$value;�����}�

����public�function�flushSession(Request�$request)�{���������$value�=�$request->session()->flush();���������echo�"로그아웃";�����}

2 TestController.php

Page 65: Laravel 로 배우는 서버사이드 #3

세션 실습 3

http://localhost/test/session/get

http://localhost/test/session/put

http://localhost/test/session/flush

3

4

5

세션변수 접근

세션변수 값을 대입 (Login)

세션변수 삭제 (Logout)

Page 66: Laravel 로 배우는 서버사이드 #3

수고하셨습니다. :)