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

55
Laravel 로 배우는 서버사이드 #2 ABCD, SNOWKIWI / 한성일

Upload: -

Post on 07-Jan-2017

1.381 views

Category:

Software


3 download

TRANSCRIPT

Laravel�로�배우는�서버사이드�#2

ABCD,�SNOWKIWI�/�한성일

1. 기본 콘솔 사용법

콘솔 사용법

직접적으로 라라벨 교육과는 관련이 없지만 알아두시면 정말 유용합니다.

익숙하지 않은 콘솔

알고나면 어렵지 않아요. 전체는 너무 많고

지금 필요한 것들만 알아보죠.

콘솔 사용 방법

1. 시작 버튼

2. 프로그램 및 파일 검색

3. cmd

cmd

작업폴더 설정 (맥)

1

2 3

mkdir (make directory)

디렉토리를 생성하는 명령어

$�mkdir�~/Documents/test

mkdir�C:\test

C드라이브 아래에 test 라는 폴더를 생성 (윈도우는 드라이브부터 시작 합니다. C: 그리고 경로가 슬러시(/)가 아닌 키표시(역슬러시)입니다.)

~ 자신의 홈디렉토리의 Document 폴더에 test 라는 폴더 생성 ~은 홈디렉토리를 나타냅니다. (/Users/jamie)

cd (change directory)

cd�c:\test

cd ~/Document/test

C드라이브 test라는 폴더로 이동합니다.

(홈디렉토리) Document 의 test 폴더로 이동합니다.

cd (change directory)

cd�..

한칸 뒤로 나옵니다. 윈도우에서는 c:\ 로 맥에서는 Document 폴더로 이동합니다.

~

자기의 홈 디렉토리를 나타냅니다. (리눅스에서는 /home/아이디)

ex) 맥에서는 /Users/자신의 아이디 리눅스나 유닉스는 /home/jamie

하면 자신의 홈으로 이동합니다.cd�~�

cd�-

이전 디렉토리로 이동합니다.

ls (list directory)

ls 현재 경로의 모든 파일과 디렉토리 출력 유닉스(맥, 리눅스) 계열에서 사용

dir

현재 경로의 모든 파일과 디렉토리 출력 윈도우 계열에서 사용

절대경로와 상대경로

- 절대경로

/Users/jamie/Document

- 상대경로

cd�Document/test

만약 /Users/jamie 경로에 위치하고 있다면..

로 이동 가능

자동완성기능

cd�Use�

Use 까지만 누리고 ‘tab’ 버튼을 눌르면

cd�Users��

가 자동 완성됩니다. 폴더 파일명 모두 적용 됩니다.

명령어 사용시 오타를 최소화 해줍니다. 정말 필요하실 겁니다. !!

더 알고 싶다면

http://passing2.tistory.com/56

http://mactraining.tistory.com/148

2. 복습

#1 설정 간단 설명

복습

서버사이드

Web Server (Apache, Nginx)

PHP Laravel

PHP의 가장 중요한 역할은 데이터베이스와의 통신

클라이언트

인터넷

서버사이드

3. 준비

Bracket 작업폴더설정

1

2

3

/Users/{자신의아이디}/Documents/laravel-space/abcd

cd�C:\laravel-space\abcd

Document Root 변경

/Users/{자신의아이디}/Documents/laravel-space/abcd cd C:\laravel-space\abcd

Document root 디렉토리 권한 변경

sudo�chown�-R�{자신의로그인아이디}:staff�~/Documents/laravel-space/

폴더권한이 root (super 유저) 로 되어있기 때문에 자신의 소유로 변경해주는 작업입니다.

public 경로를 줄여봅시다.

<IfModule�mod_rewrite.c>�����RewriteEngine�On�

����RewriteRule�^(.*)$�public/$1�[L]�</IfModule>

전 실습에는 public 경로 까지 Document Root 로 잡았지만 국내 호스팅 시에는 그렇게 할 수 가 없습니다. 아파치 서버에서는 .htaccess 파일로 경로를 줄일 수(rewrite) 있습니다.

/Users/{자신의아이디}/Documents/laravel-space/abcd

cd�C:\laravel-space\abcd

.htaccess� 파일을 다음의 내용으로 생성해 줍니다.

4. MVC

MVC (Model, View, Controller)

View

Controller

Model

화면

모델 컨트롤 뷰 컨트롤

데이터

5. Route

URL, URI

인터넷의 URL 은 모두 하나의 리소스를 가르킵니다.

Route 기본 구조경로를 만들어주는 작업

Route::get('/welcome/{id}',�'WelcomeController@showHello');

경로 컨트롤러 클래스 메소드http 메서드

app/Http/routes.php

Route 실습 1-1

php�artisan�make:controller�TestController

2. TestController 생성

cd�~/Documents/laravel-space/abcd

복사하는 방법이 아닌 “세련된” 방법으로 컨트롤러 생성

cd�C:\laravel-space\abcd

홈디렉토리로 이동

app/Http/Controllers/TestController.php 생성확인

1

2

3

Route 실습 1-2

Route::get('/test', 'TestController@getTestPage');

TestController 내용 깔끔하게 삭제4

5 app/Http/routes.php 다음라인 추가

컨트롤러 클래스 클래스의 메소드경로

Route 실습 1-3

����public�function�getTestPage()�����{���������return�"test�laravel";�����}

app/Http/Controllers/TestController.php 수정 다음라인 추가6

7 http://localhost/test

6. Middleware

미들웨어

요청을 가로채서 원하는 기능을 넣을 수 있습니다.

클라이언트 요청

Route 리소스

유용한 사용자인지?? 이 사용자에게 알맞는 권한은?? … 공사중 인증확인 hook

Middleware

미들웨어 실습 1-1

php�artisan�make:middleware�ABCDMiddleware

홈 디렉토리로 이동

artisan 으로 ABCDMiddleware 생성

생성�파일�확인�

/app/Http/Middleware/ABCDMiddleware.php

1

2

3

미들웨어 실습 1-2

Route::get('/test/middleware',�['middleware'�=>�['abcd'],�function�()�{�����echo�‘요청�진행’;�}]);

/app/Http/routes.php

/app/Http/Kernel.php

����protected�$routeMiddleware�=�[�…,�

��������'abcd'�=>�\App\Http\Middleware\ABCDMiddleware::class�����];

$routeMiddleware 에 abcd 미들웨어를 추가합니다. 주의) 기존에 있던곳 아래 줄에 추가

4

5

미들웨어 실습 1-3

/app/Http/Middleware/ABCDMiddleware.php�파일 수정

����public�function�handle($request,�Closure�$next)�����{���������$param�=�$request->input(‘param’);���������if�(!empty($param))���������{�������������Log::info(‘미들웨어에서�처리’);�������������return�redirect('/test');���������}���������return�$next($request);�����}

use�Log;

다음라인 추가 (use Closure; 아래)

6

미들웨어 실습 1-4

http://localhost/test/middleware?param=haha

http://localhost/test/middleware

7 결과 확인

8 왜이렇게 되는 걸까요?

7. Log

LOG

시스템이 출력하는 메시지 (에러, 경고, 정보) 를 확인합니다. 의도적으로 정보확인을 위해 개발자가 로그를 입력하기도 합니다.

! 6. 미들웨어 실습 참고

LOG 실습 1-1

Log::info('This�is�some�useful�information.');�Log::warning('Something�could�be�going�wrong.');�Log::error('Something�is�really�going�wrong.');

/config/app.php

use�Log;

클래스에 use Log 라고 입력해서 Log 라이브러리를 불러옵니다.

로그 형식

'debug'�=>�env('APP_DEBUG',�true),�

를 다음처럼 true 로 바꿉니다.

1

2

LOG 실습 1-2

$�tail�-f�$�tail�-f�~/Documents/laravel-space/abcd/storage/logs/laravel.log�

C:\laravel-space\abcd\storage\logs

laravel.log�파일을�열어�보시면�됩니다.

3 결과 확인

8. Controller

컨트롤러 이름 부여

Route::get('/test',�['as'�=>�'testname',�'uses'�=>�'TestController@getTestPage']);

as 키워드를 넣으면 컨트롤러가 ‘test’ 이름으로 지정됩니다..

Route::get('/test/contname',�function()�{�����return�redirect(route('testname'));�});

http://localhost/test/contname

1 /app/Http/routes.php다음라인 추가

2 /app/Http/routes.php다음라인 추가

3

파라미터 전달 실습1

����public�function�authUser($id,�$pass)�{���������if�(�$id�===�"jamie"�&&�$pass�===�"1234")�{�������������echo�"로그인�성공";���������}�else�{�������������echo�"로그인�실패";���������}�����}

/app/Http/Controllers/TestController.php��다음라인 추가

Route::get('/test/auth/{id}/{pass}',�'TestController@authUser');

/app/Http/routes.php1

2

파라미터 전달 실습2

3

주의 !! 실제 사이트에서 아이디와 패스워드를 주소로 넘기면 큰일나겠죠.

http://localhost/test/auth/jamie/1234

9. View

뷰 실습 1

Route::get('/test/view',�'TestController@getViewPage');

����public�function�getViewPage()�����{���������return�view('test');�����}

1 /app/Http/routes.php 다음라인 추가

2/app/Http/Controllers/TestController.php��다음라인 추가

뷰 실습 2

/resources/views/test.php

test.php 파일 추가

<!DOCTYPE�html>�<html>�<head�lang="en">�����<title>뷰테스트</title>�</head>�<body>�����<h1>이렇게�html을�수정합니다</h1>�����<p>샬라샬라</p>�</body>�</html>

3

데이터 전달 실습 1

/resources/views/test�test 폴더 생성

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

<!DOCTYPE�html>�<html>�<head�lang="en">�����<title>데이터�테스트</title>�</head>�<body>�����<h1>이런�메시지를��<?php�echo�$message;�?></h1>�</body>�</html>

1

2

데이터 전달 실습 2

Route::get('/test/view/{message}',�'TestController@viewMessage');

����public�function�viewMessage($message)�{���������return�view('test.message')->with('message',�$message);�����}

http://localhost/test/view/메시지를

3

4

5

데이터 전달 실습 3

/views/test/message.php

view('test.message')

test/message.php 구조는 ‘.’ 으로 접근합니다. 폴더가 더 많아진다면 ‘.’ 이 더 많아지겠죠.

10. 라이프 사이클

라이프 사이클

http://xpressengine.github.io/laravel-korean-docs/docs/5.0/lifecycle/

public/index.phpKernel

(app/Http/Kernel.php)

Provider (config/app.php)

Route

providers 로딩

11. 어플리케이션 구조

파일구조

http://xpressengine.github.io/laravel-korean-docs/docs/5.0/structure/

수고하셨습니다. :)