Laravel(라라벨) 기초 ( 5.0 ~ 5.3 )

Laravel(라라벨) 기초 ( 5.0 ~ 5.3 )

Laravel(라라벨) 기초 요약

( 주로 Laravel 5.0~5.2 )

1) 어플리케이션 키

-- 세션 데이타를 암호화 하거나 laravel의 암호 패키지인 Crypt클래스로 암/복호화할떄 사용

-- composer나 installer가 프로젝트를 생성시에는 마지막 단계에서 키가 자동 생성됨

-- 임의로 직접 생성 : php artisan key:generate

-- 생성된 APP_KEY는 .env에 저장됨

: 여러대의 서버를 운영할때는 동일 .env 파일을 사용해야 함

-- 키가 설정되어 있지 않다면, config/app.php에 설정된 기본키를 사용(보안 취약)

2) 설정 파일

-- 데이타 베이스 : config/database.php

: key/value형식의 배열로 관리

ex) 'host' => env('DB_HOST', 'localhost')

: 환경 설정파일인 .env에서 DB_HOST항목을 읽고, 없으면 localhost를 사용

: 'default' => 'mysql' 의 수정으로 데이타베이스 변경

-- 파일을 위한 캐시 : config/cache.php

-- 메일 설정 : config/mail.php

-- laravel 환경 설정 : config/app.php

: 'debug' => env('APP_DEBUG', false) 에서 true로 변경하면

: 'timezone' => 'Asia/Seoul'

: 'url' => 'http://sample.com'

: 'locale' => 'ko' # 기본 locale은 en으로 되어 있음

: 'log' => env('APP_LOG', 'single') # 어플로그를 단일 파일로 로그는 남기는 설정

ex) storage/logs/laravel.log

3) laravel routing(라우팅)

-- url routing은 클라이언트가 요청한 url과 요청방식(get,post,delete,put등)에 따른 서버의 처리방식을 지정

-- Pretty UTL은 RESTful 기반의 웹서비스 제공

ex) index.php?action=view&article;=123

ex) index.php/view/article/123

-- MVC패턴의 가장 앞에 위치하여 Front Controller라고 함

-- 라우팅 설정 : app/Http/routes.php ( Laravel 5.0~5.2 )

-- 라우팅 설정 : routes/web.php ( Laravel 5.3 )

--- 기본적인 라우트

Route::get('hello', function() { return 'Hello!'; });

--- 계층 구조

Route::get('hello/world', function(){ return 'Hello World!'; });

--- 파라미터 전달

Route::get('hello/world/{name}', function($name){ return 'Hello World!' . $name ; });

--- 파라미터 전달 ( null 또는 default )

Route::get('hello/world/{name?}', function($name=null){ return 'Hello World!' . $name ; });

4) HTTP 응답

--- Response Class 사용

use Illuminate\Http\Response; Route::get('hello/world/{name}', function(name) { $response = new Response('Hello World', $name, 200); return $response; });

* use구문 선언과, new 객체를 통해 생성 번거롭다

--- response Helper Class 사용 ( use, new를 사용 안함)

Route::get('hello/world/{name}', function(name){ $response = new Response('Hello World', $name, 200); return response('Hello World'. $name, 200)->header('Content-Type','text/plain'); });

* Method Chaining 가능 / 다중 헤더 설정

Route::get('hello/world/{name}', function(name){ $response = new Response('Hello World', $name, 200); return response('Hello World'. $name, 200) ->header('Content-Type','text/plain') ->header('Cache-Control','max-age=' . 60*60. ".must-revalidate") });

* JSON 데이타 형식

Route::get('hello/world/{name}', function(name){ $data = ['name' => 'Iron Man', 'gender'=>'Man']; return response()->json($data); });

5) Views

--- View Class 사용 ( 점(.)을 계층 구분 )

Route::get('hello/html', function() { return View::make('hello.html'); });

* 위치 : resources/views/hello/html.php ( Views위치는 Laravel 5.0~5.3 동일 )

(laravel의 모든 view는 resources/view폴더에 위치 )

--- view Helper Class 사용

Route::get('hello/html', function() { return view('hello.html'); });

});

--- view에 변수 전달

1) app/http/routes.php

Route::get('task/view', function() { $task = ['name' => 'Task 1', 'due_date' => '2015-06-01 12:00:11']; return view('task.view')->with('task', $task); });

2) resource/views/task/view.php

< !doctype html > < html lang="ko"> Ok 할일 정보 할 일: 기 한:

6) Blade

: laravel에 포함 되어 있는 Template Engine

: 기본 View와 구분하기 위해 Blade Template 파일은 .blade.php의 확장자 사용

-- 변수 출력 : {{ $var }} 를 사용 ( 과 동일한 기능)

: XSS, Cross-Site Scripting의 악의적인 자바스크립트 동작 막기

Ok 할일 정보 작 업: {{ $task['name'] }} 기 한: {{ $task['due_date'] }}

-- 조건문 : 키워드 앞에 @를 붙여 준다.

1) 기존 php 코드

= 5) { ?> 는 5 보다 큽니다.

* php의 복잡한 코드는 가독성도 떨어지고, 실수할 여지가 많다. 2) Blade 조건문

@if ($num > 5) {{ $num }} 는 5 보다 큽니다. @else {{ $num }} 은 5보다 작습니다. @endif

7) Layout 상속

1) resources/views/layouts/master.blade.php

@yield('title') @yield('content')

* @yield : 자식 컨텐츠에 구현하도록 양보하는 키워드 ( @section 키워드로 구현 )

* @extends : 자식 페이지는 상속할 부모 템플릿을 extends 키워드로 지정

2) resources/views/task/list3.blade.php

@extends('layouts.master') @section('title') 할일 목록 @endsection @section('content') @foreach($tasks as $task) @endforeach

할 일 기 한 {{ $task['name'] }} {{ $task['due_date'] }}

@endsection

* Layout 상속 : https://www.lesstif.com/pages/viewpage.action?pageId=24445482

8) Blade 디버깅

- Blade Template : Blade Compiler -> Legacy PHP Code(파일명 변경됨) ->PHP Engine

- 컴파일된 파일 : storage/framework/view 폴더에 위치

원문 :

https://www.lesstif.com/pages/viewpage.action?pageId=28606603

쉽게 배우는 라라벨5 프로그래밍, 2016, Sep

from http://printhelloworld.tistory.com/67 by ccl(A) rewrite - 2020-03-31 19:59:36