laravel 로 배우는 서버사이드 #3
TRANSCRIPT
Laravel�로�배우는�서버사이드�#3PHP�문법,�View,�Template,�Request,�Session
ABCD,�SNOWKIWI�/�한성일
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
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
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
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
흐름
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
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
@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 라인 추가
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)
수고하셨습니다. :)