PHP 기반의 Micro Frameworks 정리

2020.12.02 13:54

졸리운_곰 조회 수:51

 

근래 들어서는 공개적으로 하는 작업은 아니지만 잔잔하게 프로토타이핑은 꾸준히 하고 있는데 flask와 sqlalchemy 조합으로 진행하고 있었다.

  • flask는 micro web framework이며 micro 답게 간단하게 작성 가능해 생각나는 대로 작성하기 편리
  • sqlalchemy는 class 정의 만으로 db를 쉽게 구성하고 코드와 스키마를 두번 작성하는 수고를 줄여주는, 짱짱 좋은 ORM

호기심으로 로컬의 php를 이번달에 공개한 5.5.5으로 업데이트 하면서 micro framework이 없을까 찾아봤더니 비슷한 컨셉의 프레임워크가 많이 보여 간단하게 정리해봤다. (sqlalchemy를 대안으로 사용할 php orm은 제대로 찾아보지 못했다.)

찾아보니 생각보다 많은 편이었고 flask에서 이용한 파이썬의 delegate과 같은 feature는 php에 존재하지 않기 때문에 다양한 방식으로 구현되어 있었다. 특히 php에서 익명함수(Anonymous function)는 5.3.0 이후 제공되고 있기 때문에 이를 기준으로 지원 여부를 살펴보는 것도 도움이 된다. 1

대다수 micro framework는 Composer라는 의존성 관리도구를 설치하길 권장한다. [Composer 시작하기][1] 문서를 살펴보면 도움이 된다.

Slim

Slim은 composer를 통해 간편하게 설치할 수 있으며 PHP 5.3.0 이상을 요구한다.

$app = new \Slim\Slim();
$app->get('/hello/:name', function($name){
    echo 'Hello, ' . $name;
});
$app->run();

$app에 인스턴스를 할당할 때 mode, debug 등 다양한 옵션을 넣을 수 있으며 use3를 이용한 스코핑 인젝션 등이 가능하다. 익명함수, 일반함수 두가지 모두 가능하다. Route가 명시적이라 코드 리딩이 더 쉬운 편이다. 자세한 내용은 Slim의 문서 http://www.slimframework.com/ 참고.

Limonade

Limonade http://limonade-php.github.io/는 루비의 Sinatra와 Camping, Lua의 Orbit의 영감으로 만들어진 PHP micro framework이다.

require_once 'vendors/limonade.php';
dispatch('/', 'hello');
  function hello()
  {
      return 'Hello world!';
  }
run();

각 기능을 함수로 선언해 dispatch를 이용해 각 URL에 라우팅 하는 형태로, 직관적인 코드 작성이 가능하지만 동일한 함수명을 사용하지 않도록 주의해야 한다.

Flight

Flight라는 Public class를 이용해 작성해나가는 형태의 framework이다.

require 'flight/Flight.php';

Flight::route('/', function(){
    echo 'hello world!';
});

Flight::start();

사용자가 선언한 인스턴스가 아닌 Flight를 반복적으로 입력해야 해서 별로 좋은 것 같진 않다. Flight http://flightphp.com/

Silex

Silex http://silex.sensiolabs.org/는 앞서 살펴본 Slim과 상당히 유사하며 Symfony2 컴포넌트를 기반으로 한 특징을 가지고 있다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

require_once __DIR__.'/../vendor/autoload.php'; 

$app = new Silex\Application(); 

$app->get('/hello/{name}', function($name) use($app) { 
    return 'Hello '.$app->escape($name); 
}); 

$app->run(); 

Bullet

PHP 5.3+을 요구, 5.4 이상을 추천하는 framework이다. Composer로 패키지 관리가 가능하다.

$app = new Bullet\App();
$app->path('/', function($request) {
    return "Hello World!";
});

echo $app->run(new Bullet\Request());

확장성을 고려해 구현해둔 부분이 많이 보인다. [Bullet 문서][2] 참고.

GluePHP

그냥 받아서 압축을 해제하면 바로 사용할 수 있는 micro framework이다. 다른 것들에 비해 가장 생각없이(?) 쉽게 사용할 수 있다.

<?php
    require_once('glue.php');
    $urls = array(
        '/' => 'index'
    );
    class index {
        function GET() {
            echo "Hello, World!";
        }
    }
    glue::stick($urls);
?>

url에 대해 정규표현식으로 지정할 수 있는 특징이 있다. 각각의 메소드를 바인딩 하는 것이 아니라 클래스를 바인딩하며 각 클래스마다 GET(), POST() 등의 메소드를 호출하는 형태다. 2


  1. 사실 대다수의 micro framework는 5.3 이상을 요구한다. 그래도 예전에 비해 php 최근 버전을 지원하는 호스팅이 많이 늘었다.

  2. 익명함수 내부에서 외부의 변수를 이용하기 위해 사용하는 메소드다.

  3. 클래스의 단위를 잘 고려하지 않으면 쉽게 지저분해질 것 같다.

    [1]: http://haruair.com/blog/1860 [2]: http://bulletphp.com/

[출처] https://edykim.com/ko/post/php-based-micro-frameworks-theorem/

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
149 cake php 사용법 file 졸리운_곰 2017.01.15 2436
148 PHP에서 Python을 호출한 후, 리턴값 받기 졸리운_곰 2014.07.11 1867
147 wp 워드프레스 플러그인 만들기 file 졸리운_곰 2016.08.08 1726
146 php에서 Access (엑세스) mdb (accdb) 파일에 연결 file 졸리운_곰 2016.08.11 1419
145 데이터로서의 코드: PHP의 Reflection(1) 가을의 곰을... 2013.12.22 960
144 SQLite 소개 졸리운_곰 2016.08.11 872
143 SQLite 와 php 의 연동 졸리운_곰 2016.08.11 824
142 How to Insert JSON Data into MySQL using PHP file 졸리운_곰 2015.12.04 817
141 PHP 로 guid(uuid) 만들기 졸리운_곰 2019.02.27 716
140 [PHP] JWT 구현하기 졸리운_곰 2022.07.15 599
139 PHP를 이용한 웹 서비스 개발(1) 가을의 곰을... 2013.12.11 588
138 PHP 와 MYSQL 연동 졸리운_곰 2015.08.11 585
137 WordPress Development using PhpStorm 졸리운_곰 2017.05.05 457
136 PHP UTF-8 문자열 길이 비교하여 자르는 함수 <strcut_utf8> 졸리운_곰 2014.12.29 438
135 php 세션 저장소를 redis 로 바꾸어 본 후기. file 졸리운_곰 2018.05.05 413
134 PhpStorm 으로 라라벨 개발 하기 졸리운_곰 2017.05.05 408
133 PHP 파일 업로드와 다운로드 만들기 file 졸리운_곰 2020.05.07 376
132 PHP의 composer 란 무엇인가?, PHP 의존성 관리도구 졸리운_곰 2015.05.15 372
131 Learning Library for PHP file 졸리운_곰 2016.03.16 371
130 PHP 프레임 새로고침할 때 페이지 유지하기 입니다. 졸리운_곰 2017.09.17 365
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED