때때로 콘솔 프로그램을 개발하고 싶을 때가 있다. 기존에는 Go 로 하다가 그래도 조금 더 잘 알고 있는 라라벨로 콘솔 프로그램을 개발하기 수월하게 할 수는 없을까 싶어서 찾아낸 것이 바로 Laravel Zero 다. 물론 라라벨에서도 아티즌 콘솔 명령어를 작성하는 일은 가능하지만, 콘솔 어플리케이션을 위해 라라벨을 사용하는 일은 너무 오버 엔지니어링이다. Laravel Zero 는 콘솔 어플리케이션을 위한 마이크로 프레임워크다. 라라벨의 공식 패키지는 아니지만 오픈소스이며 라라벨에서 아티즌 콘솔 명령어를 따로 떼어낸 듯한 느낌으로 사용할 수 있다. 따라서 기존에 라라벨을 사용하는 방법을 알고 있다면 사용해 볼만하다. 사용법도 아주 간단하며 서비스 컨테이너나 서비스 프로바이더, 파사드, 헬퍼 등 라라벨에..
이번 포스팅은 최신기술과는 거리가 멀다. 하지만, 여전히 시장에서는 카페24와 같은 웹호스팅 서비스를 사용하여 서비스를 배포하는 일이 자주 발생하는 만큼, 누군가에게 이 글은 도움이 되리라 생각한다. 나도 내 의지와는 상관없이 카페24에서 프로젝트를 할 일이 생긴데다가, 어떻게하면 카페24 환경에 라라벨 프로젝트를 간편하게 배포할 수 있을까 고민해본 결과 몇가지 가능성에 도달했다. 과거에 카페24를 사용하여 프로젝트를 진행했던 것은 레거시가 대부분이었기 때문에 그냥 아날로그식으로 FTP 를 연결해서 파일을 배포하면 그만이었다만, 라라벨을 할 때는 차마 그러고 싶지 않았다. 이제는 그러한 배포방식에서 벗어나야만 한다. 라라벨 프로젝트를 배포하는 것은 Laravel Envoyer, Laravel Forge ..
라라벨에서 쿼리를 작성하는 방법은 간단하다. 레거시 PHP 에서 쿼리를 작성하는 방법은 PDO(PHP Data Object)를 사용하더라도 그다지 보기 좋은 것은 아니었다. 예를 들자면, $pdo = new PDO(...); $sth = $pdo->prepare("SELECT * FROM users"); if ($sth->execute()) { $users = []; while ($user = $sth->fetchObject()) { array_push($users, $user); } } 이렇게 생긴 기존의 레거시 코드(mysqli, mysql 과 같은 더 low Level API 를 사용하면 보기가 안 좋아진다.)를 라라벨의 쿼리빌더를 다음과 같이 간단하게 표현할 수 있다. $users = DB::ta..
이번에는 블레이드 템플릿에서 상속, 컴포넌트, 뷰 컴포저에 대해 간단히 알아보도록 하자. 블레이드에는 여러 지시어(Directive)가 존재하는데, 상속, 컴포넌트, 슬릇 기능 등은 많이 쓰이는 기능이다. 따라서 이를 대표적으로 알아보자. 지시어의 수가 다소 많은터라 나도 다 알지 못한다. 상속 상속과 관련된 지시어는 @extends, @yield, @section, @show, @stack 이 존재한다. 자바스크립트 템플릿을 사용하듯 블레이드를 사용해서도 템플릿을 상속하고, 다른 템플릿을 포함시킬 수 있는 기능을 가지고 있다. 즉, 템플릿을 기준에 따라 분리가 가능하다는 이야기다. 다만, 다소 헷갈리는 기능들이 많기 때문에 차이점을 알아두면 좋다. @extends @extends 는 자식 템플릿이 특정..
라라벨은 풀스택 프레임워크이기에 프론트엔드도 어느정도 개발할 수 있고, 뷰나 리액트같은 SPA(Single Page Application) 프레임워크를 사용할 수도 있다. 그러한 프레임워크를 사용하여 컴포넌트를 사용하기 위한 기반 템플릿이 있는데, 라라벨의 블레이드 템플릿이 그러하다. PHP는 언어이면서 자체적으로 템플릿의 역할도 겸할 수 있는데, 블레이드는 템플릿의 역할을 보다 강화시킨 것이다. 많이 알려져 있는데 PHP 템플릿인 Twig, Mustache 랑 같은 개념이다. 블레이드 템플릿 블레이드 템플릿은 라라벨에서 프론트엔드 마크업 및 컴포넌트를 포함하고 작성하기 위한 템플릿이다. 일반적인 PHP 템플릿처럼 if, for 와 같은 제어구조를 사용할 수도 있고, 다른 템플릿을 상속받고 슬릇(Slot..