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

Post on 07-Jan-2017

1.085 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

ABCD,�SNOWKIWI�/�한성일

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

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

PHPController 생성

php�artisan�make:controller�PHPController

콘솔 홈 디렉토리로 이동1

2

PHP 테스트를 위해..

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

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

1. 변수

변수와 함수

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

- 변수

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

변수 (Variable)

값을 담는 그릇

변수 (Variable)

$a�=�0;

0X3213…….

0을 저장합니다.

변수 (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);

값 대입방법

변수 (Variable)

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

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

변수 실습 1

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

Routes.php1

변수 실습 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

변수 실습 3

3 http://localhost/php/variable

2. 함수

함수 (Function)

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

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

Helper 등록 이유

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

정식 메뉴얼에는 없음

함수 실습 1

3

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

4

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

http://localhost/php/function5

Routes.php

PHPController.php

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

배열 실습2

http://localhost/php/array3

4. 제어문

제어문

조건

YES

NO

조건

NO

YES

탕수육?

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

배가고프다.

조건 연산자

연산자 설명

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

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

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

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

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

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

Else - If

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

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

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

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

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

1

2

3

빠져나온다.

제어문 실습 1

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

1 Routes.php

제어문 실습 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

제어문 실습 3

http://localhost/php/control3

5. 반복문

반복문

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

반복문 실습 1

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

1 Routes.php

반복문 실습 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

반복문 실습 3

3 http://localhost/php/loop

흐름

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보다 커지면 빠져 나온다.

6. 주석

주석

/* */

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

// 한줄주석

여러줄 주석(블록)

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

주석

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

7. 뷰

뷰 실습 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

이미 파일 생성 되어 있음

뷰 실습 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

뷰 실습 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

뷰 실습 2 - 3

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

8. 템플릿 (Template)

템플릿

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

바뀌는 부분

템플릿

템플릿 뷰는

default.blade.php�

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

템플릿 실습 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

템플릿 실습 2

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

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

2

템플릿 실습 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

템플릿 실습 4

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

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

4

템플릿 실습 5

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

5 Routes.php

템플릿 실습 6

resources/views/pages/about.blade.php

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

6

템플릿 실습 7

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

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

7

템플릿 실습 8

http://localhost/layout/home6

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

템플릿에서는 PHP 데이터에

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

9. Request

인터넷

Request

Request

Response

서버클라이언트

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

Request 실습 1

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

1 Routes.php

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

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

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 라인 추가

Request 실습 3

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

10. 세션

Session

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

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

세션 실습 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

세션 실습 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

세션 실습 3

http://localhost/test/session/get

http://localhost/test/session/put

http://localhost/test/session/flush

3

4

5

세션변수 접근

세션변수 값을 대입 (Login)

세션변수 삭제 (Logout)

수고하셨습니다. :)

top related