keeping it small - getting to know the slim micro framework - @jeremykendall

135
8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 1/135 Keeping it small Getting to know the Slim micro framework @JeremyKendall

Upload: buhosu-ciprian

Post on 04-Jun-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 1/135

Keeping it smallGetting to know the Slim micro framework 

@JeremyKendall

Page 2: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 2/135

 Jeremy

Kendall

Page 3: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 3/135

 Jeremy

Kendall

I love to code

Page 4: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 4/135

 Jeremy

Kendall

I love to code

I’m terribly forgetful

Page 5: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 5/135

 Jeremy

Kendall

I love to code

I’m terribly forgetful

I take pictures

Page 6: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 6/135

 Jeremy

Kendall

I love to code

I’m terribly forgetful

I take pictures

I work at OpenSky

Page 7: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 7/135

Micro framework?

Page 8: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 8/135

Micro framework?

Concise codebase

Page 9: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 9/135

Micro framework?

Concise codebase

Clear codebase

Page 10: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 10/135

Micro framework?

Concise codebase

Clear codebase

Addresses a small set of use cases

Page 11: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 11/135

Micro framework?

Concise codebase

Clear codebase

Addresses a small set of use cases

Addresses those use cases well

Page 12: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 12/135

What is Slim?

Page 13: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 13/135

What is Slim?

Inspired by Sinatra

Page 14: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 14/135

What is Slim?

Inspired by Sinatra

Favors cleanliness over terseness

Page 15: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 15/135

What is Slim?

Inspired by Sinatra

Favors cleanliness over terseness

Favors common cases over edge cases

Page 16: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 16/135

Installing Slim

Page 17: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 17/135

RTFM

Page 18: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 18/135

RTFM ;-)

Page 19: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 19/135

Don’t forget .htaccess!

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^ index.php [QSA,L]

http://docs.slimframework.com/pages/routing-url-rewriting/

Page 20: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 20/135

Hello world

<?php

require '../vendor/autoload.php';

$app = new \Slim\Slim();

$app->get('/hello/:name', function ($name) {

  echo "Hello, $name";

});

$app->run();

Page 21: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 21/135

Hello world

<?php

require '../vendor/autoload.php';

$app = new \Slim\Slim();

$app->get('/hello/:name', function ($name) {

  echo "Hello, $name";

});

$app->run();

Page 22: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 22/135

Hello world

<?php

require '../vendor/autoload.php';

$app = new \Slim\Slim();

$app->get('/hello/:name', function ($name) {

  echo "Hello, $name";

});

$app->run();

Page 23: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 23/135

Hello world

<?php

require '../vendor/autoload.php';

$app = new \Slim\Slim();

$app->get('/hello/:name', function ($name) {

  echo "Hello, $name";

});

$app->run();

Page 24: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 24/135

Hello world

<?php

require '../vendor/autoload.php';

$app = new \Slim\Slim();

$app->get('/hello/:name', function ($name) {

  echo "Hello, $name";

});

$app->run();

Page 25: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 25/135

Let’s look at a

Slim application

Page 26: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 26/135

Flaming Archer

Page 27: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 27/135

Flaming Archer

 wat

Page 28: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 28/135

“Great repository names are short and memorable.

Need inspiration? How about flaming-archer.”

Page 29: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 29/135

Flaming Archer

Page 30: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 30/135

Flaming Archer

Photo 365 project

Page 31: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 31/135

Flaming Archer

Photo 365 project

Built in 4 days (Saturday through Tuesday)

Page 32: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 32/135

Flaming Archer

Photo 365 projectBuilt in 4 days (Saturday through Tuesday)

Basic application — a few bells, no whistles

Page 33: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 33/135

Flaming Archer

Photo 365 projectBuilt in 4 days (Saturday through Tuesday)

Basic application — a few bells, no whistles

Routing

Page 34: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 34/135

Flaming Archer

Photo 365 projectBuilt in 4 days (Saturday through Tuesday)

Basic application — a few bells, no whistles

Routing

Twig views

Page 35: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 35/135

Flaming Archer

Photo 365 projectBuilt in 4 days (Saturday through Tuesday)

Basic application — a few bells, no whistles

Routing

Twig views

Middleware

Page 36: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 36/135

4 views

Page 37: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 37/135

Page 38: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 38/135

Page 39: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 39/135

Page 40: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 40/135

Page 41: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 41/135

phploc --exclude vendor,tests,templates .

phploc 1.6.4 by Sebastian Bergmann.

Directories: 7Files: 13

Lines of Code (LOC): 876  Cyclomatic Complexity / Lines of Code: 0.04Comment Lines of Code (CLOC): 272Non-Comment Lines of Code (NCLOC): 604

Page 42: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 42/135

Configuration

return array(

  'slim' => array(

Page 43: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 43/135

y(

  'templates.path' => __DIR__ . '/templates',

  'log.level' => 4,

  'log.enabled' => true,

  'log.writer' => new Slim\Extras\Log\DateTimeFileWriter(

  array(  'path' => __DIR__ . '/logs',

  'name_format' => 'y-m-d'

  )

  )

  ),

  'twig' => array(

  // . . .  ),

  'cookies' => array(

  // . . .

  ),

  'flickr.api.key' => 'FLICKR API KEY',

  'pdo' => array(

  // . . .  )

);

return array(

  'slim' => array(

Page 44: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 44/135

y(

  'templates.path' => __DIR__ . '/templates',

  'log.level' => 4,

  'log.enabled' => true,

  'log.writer' => new Slim\Extras\Log\DateTimeFileWriter(

  array(  'path' => __DIR__ . '/logs',

  'name_format' => 'y-m-d'

  )

  )

  ),

  'twig' => array(

  // . . .  ),

  'cookies' => array(

  // . . .

  ),

  'flickr.api.key' => 'FLICKR API KEY',

  'pdo' => array(

  // . . .  )

);

S

return array(

  'slim' => array(

Page 45: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 45/135

  'templates.path' => __DIR__ . '/templates',

  'log.level' => 4,

  'log.enabled' => true,

  'log.writer' => new Slim\Extras\Log\DateTimeFileWriter(

  array(  'path' => __DIR__ . '/logs',

  'name_format' => 'y-m-d'

  )

  )

  ),

  'twig' => array(

  // . . .  ),

  'cookies' => array(

  // . . .

  ),

  'flickr.api.key' => 'FLICKR API KEY',

  'pdo' => array(

  // . . .  )

);

S

Views

return array(

  'slim' => array(

Page 46: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 46/135

  'templates.path' => __DIR__ . '/templates',

  'log.level' => 4,

  'log.enabled' => true,

  'log.writer' => new Slim\Extras\Log\DateTimeFileWriter(

  array(  'path' => __DIR__ . '/logs',

  'name_format' => 'y-m-d'

  )

  )

  ),

  'twig' => array(

  // . . .  ),

  'cookies' => array(

  // . . .

  ),

  'flickr.api.key' => 'FLICKR API KEY',

  'pdo' => array(

  // . . .  )

);

S

Views

Cookies

return array(

  'slim' => array(

Page 47: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 47/135

  'templates.path' => __DIR__ . '/templates',

  'log.level' => 4,

  'log.enabled' => true,

  'log.writer' => new Slim\Extras\Log\DateTimeFileWriter(

  array(  'path' => __DIR__ . '/logs',

  'name_format' => 'y-m-d'

  )

  )

  ),

  'twig' => array(

  // . . .  ),

  'cookies' => array(

  // . . .

  ),

  'flickr.api.key' => 'FLICKR API KEY',

  'pdo' => array(

  // . . .  )

);

S

Views

Cookies

My stuff 

Page 48: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 48/135

$config = require_once __DIR__ . '/../config.php

// Prepare app

$app = new Slim\Slim($config['slim']);

Page 49: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 49/135

$config = require_once __DIR__ . '/../config.php

// Prepare app

$app = new Slim\Slim($config['slim']);

Config arraygoes here

Page 50: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 50/135

Routing

R i

Page 51: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 51/135

Routing

$app->get('/', function () use ($app, $service) {  $images = $service->findAll();

  $app->render('index.html', array('images' => $images));

  });

R i

Page 52: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 52/135

Routing

$app->get('/', function () use ($app, $service) {  $images = $service->findAll();

  $app->render('index.html', array('images' => $images));

  });

HTTP Method

R i

Page 53: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 53/135

Routing

$app->get('/', function () use ($app, $service) {  $images = $service->findAll();

  $app->render('index.html', array('images' => $images));

  });

HTTP MethodResource URI

R ti

Page 54: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 54/135

Routing

$app->get('/', function () use ($app, $service) {  $images = $service->findAll();

  $app->render('index.html', array('images' => $images));

  });

HTTP MethodResource URI

Anonymous Function

R ti

Page 55: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 55/135

Routing

$app->get('/', function () use ($app, $service) {  $images = $service->findAll();

  $app->render('index.html', array('images' => $images));

  });

R ti

Page 56: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 56/135

Routing

$app->get('/', function () use ($app, $service) {  $images = $service->findAll();

  $app->render('index.html', array('images' => $images));

  });

Grabs all t

R tin

Page 57: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 57/135

Routing

$app->get('/', function () use ($app, $service) {  $images = $service->findAll();

  $app->render('index.html', array('images' => $images));

  });

Grabs all t

Passes array of image data to index.html

GET

Page 58: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 58/135

GET

$app->get('/:day', function($day) use ($app, $service) {

  $image = $service->find($day);

 

if (!$image) {

  $app->notFound();

  }

  $app->render('images.html', $image);

  }

)->conditions(array('day' => '([1-9]\d?|[12]\d\d|3[0-5]\d|36[0-6])

GET

Page 59: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 59/135

GET

$app->get('/:day', function($day) use ($app, $service) {

  $image = $service->find($day);

 

if (!$image) {

  $app->notFound();

  }

  $app->render('images.html', $image);

  }

)->conditions(array('day' => '([1-9]\d?|[12]\d\d|3[0-5]\d|36[0-6])

URL parameter

GET

Page 60: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 60/135

GET

$app->get('/:day', function($day) use ($app, $service) {

  $image = $service->find($day);

 

if (!$image) {

  $app->notFound();

  }

  $app->render('images.html', $image);

  }

)->conditions(array('day' => '([1-9]\d?|[12]\d\d|3[0-5]\d|36[0-6])

URL parameter... gets passed as an

argument

GET

Page 61: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 61/135

GET

$app->get('/:day', function($day) use ($app, $service) {

  $image = $service->find($day);

 

if (!$image) {

  $app->notFound();

  }

  $app->render('images.html', $image);

  }

)->conditions(array('day' => '([1-9]\d?|[12]\d\d|3[0-5]\d|36[0-6])

URL parameter... gets passed as an

argument

Condition

GET

Page 62: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 62/135

GET

$app->get('/:day', function($day) use ($app, $service) {

  $image = $service->find($day);

 

if (!$image) {

  $app->notFound();

  }

  $app->render('images.html', $image);

  }

)->conditions(array('day' => '([1-9]\d?|[12]\d\d|3[0-5]\d|36[0-6])

URL parameter... gets passed as an

argument

Condition 1 to 366

GET

Page 63: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 63/135

GET

$app->get('/:day', function($day) use ($app, $service) {

  $image = $service->find($day);

 

if (!$image) {

  $app->notFound();

  }

  $app->render('images.html', $image);

  }

)->conditions(array('day' => '([1-9]\d?|[12]\d\d|3[0-5]\d|36[0-6])

404!

POST (with redirect)

Page 64: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 64/135

POST (with redirect)

$app->post('/admin/add-photo', function() use ($app, $service)

  $data = $app->request()->post();  $service->save($data);

  $app->redirect('/admin');

  }

);

POST (with redirect)

Page 65: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 65/135

POST (with redirect)

$app->post('/admin/add-photo', function() use ($app, $service)

  $data = $app->request()->post();  $service->save($data);

  $app->redirect('/admin');

  }

);

$_POST data is i

the request objec

Page 66: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 66/135

Multiple methods

Page 67: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 67/135

Multiple methods

$app->map('/login', function() {  // Login

  })->via('GET', 'POST');

Multiple methods

Page 68: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 68/135

Multiple methods

$app->map('/login', function() {  // Login

  })->via('GET', 'POST');

Not an HTTP Method

Multiple methods

Page 69: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 69/135

Multiple methods

$app->map('/login', function() {  // Login

  })->via('GET', 'POST');

Not an HTTP Method

via() is the

awesome sauce

Page 70: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 70/135

Logging and flash messaging

$app->post('/admin/clear-cache', function() use ($app) {

$log $app getLog();

Page 71: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 71/135

  $log = $app->getLog();

  $cleared = null;

  $clear = $app->request()->post('clear');

  if ($clear == 1) {

  if (apc_clear_cache('user')) {

  $cleared = 'Cache was successfully cleared!';

  } else {

  $cleared = 'Cache was not cleared!';

  $log->error('Cache not cleared');  }

  }

  $app->flash('cleared', $cleared);

  $app->redirect('/admin');

  }

);

$app->post('/admin/clear-cache', function() use ($app) {

$log $app >getLog(); Get the log from $app

Page 72: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 72/135

  $log = $app->getLog();

  $cleared = null;

  $clear = $app->request()->post('clear');

  if ($clear == 1) {

  if (apc_clear_cache('user')) {

  $cleared = 'Cache was successfully cleared!';

  } else {

  $cleared = 'Cache was not cleared!';

  $log->error('Cache not cleared');  }

  }

  $app->flash('cleared', $cleared);

  $app->redirect('/admin');

  }

);

Get the log from $app

$app->post('/admin/clear-cache', function() use ($app) {

$log $app >getLog(); Get the log from $app

Page 73: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 73/135

  $log = $app->getLog();

  $cleared = null;

  $clear = $app->request()->post('clear');

  if ($clear == 1) {

  if (apc_clear_cache('user')) {

  $cleared = 'Cache was successfully cleared!';

  } else {

  $cleared = 'Cache was not cleared!';

  $log->error('Cache not cleared');  }

  }

  $app->flash('cleared', $cleared);

  $app->redirect('/admin');

  }

);

Get the log from $app

Erro

$app->post('/admin/clear-cache', function() use ($app) {

$log = $app->getLog(); Get the log from $app

Page 74: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 74/135

  $log = $app->getLog();

  $cleared = null;

  $clear = $app->request()->post('clear');

  if ($clear == 1) {

  if (apc_clear_cache('user')) {

  $cleared = 'Cache was successfully cleared!';

  } else {

  $cleared = 'Cache was not cleared!';

  $log->error('Cache not cleared');  }

  }

  $app->flash('cleared', $cleared);

  $app->redirect('/admin');

  }

);

Get the log from $app

Erro

Flash message availthe next reque

Middleware

Page 75: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 75/135

Middleware

“. . . a Slim application can have middlewarethat may inspect, analyze, or modify  the application environment, request, and

response before and/or after  the Slimapplication is invoked.” 

http://docs.slimframework.com/pages/middleware-overview/

Hooks

Page 76: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 76/135

Hooks

Hooks

Page 77: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 77/135

slim.before

Hooks

Page 78: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 78/135

slim.before

slim.before.router

Hooks

Page 79: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 79/135

slim.before

slim.before.router

slim.before.dispatch

Hooks

Page 80: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 80/135

slim.before

slim.before.router

slim.before.dispatch

slim.after.dispatch

Hooks

Page 81: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 81/135

slim.before

slim.before.router

slim.before.dispatch

slim.after.dispatch

slim.after.router

Hooks

Page 82: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 82/135

slim.before

slim.before.router

slim.before.dispatch

slim.after.dispatch

slim.after.router

slim.after

Hooks

Page 83: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 83/135

slim.before

slim.before.router

slim.before.dispatch

slim.after.dispatch

slim.after.router

slim.after

class MyMiddleware extends \Slim\Middleware

{

  public function call()

{

Page 84: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 84/135

  {

  //The Slim application

  $app = $this->app;

  //The Environment object

  $env = $app->environment();

  //The Request object

  $req = $app->request();

  //The Response object

  $res = $app->response();

  //Optionally call the next middleware

  $this->next->call();

  }}

class MyMiddleware extends \Slim\Middleware

{

  public function call()

{

Extend th

Page 85: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 85/135

  {

  //The Slim application

  $app = $this->app;

  //The Environment object

  $env = $app->environment();

  //The Request object

  $req = $app->request();

  //The Response object

  $res = $app->response();

  //Optionally call the next middleware

  $this->next->call();

  }

}

class MyMiddleware extends \Slim\Middleware

{

  public function call()

{

Extend th

Define call()

Page 86: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 86/135

  {

  //The Slim application

  $app = $this->app;

  //The Environment object

  $env = $app->environment();

  //The Request object

  $req = $app->request();

  //The Response object

  $res = $app->response();

  //Optionally call the next middleware

  $this->next->call();

  }

}

Define call()

class MyMiddleware extends \Slim\Middleware{

  public function call()

{

Extend th

Define call()

Page 87: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 87/135

  {

  //The Slim application

  $app = $this->app;

  //The Environment object

  $env = $app->environment();

  //The Request object

  $req = $app->request();

  //The Response object

  $res = $app->response();

  //Optionally call the next middleware

  $this->next->call();

  }

}

Define call()

Inspect, analyze,and modify!

class MyMiddleware extends \Slim\Middleware{

  public function call()

{

Extend th

Define call()

Page 88: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 88/135

  {

  //The Slim application

  $app = $this->app;

  //The Environment object

  $env = $app->environment();

  //The Request object

  $req = $app->request();

  //The Response object

  $res = $app->response();

  //Optionally call the next middleware

  $this->next->call();

  }

}

Define call()

On to the nex

Inspect, analyze,and modify!

Page 89: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 89/135

Middleware + Hooks = WIN

Page 90: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 90/135

Navigation example

namespace Tsf\Middleware;

use \Zend\Authentication\AuthenticationService;

class Navigation extends \Slim\Middleware

Page 91: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 91/135

g

{

  /**  * @var \Zend\Authentication\AuthenticationService

*/

  private $auth;

  public function __construct(AuthenticationService $auth)

  {

  $this->auth = $auth;  }

  public function call()

  {

  // . . .

  }

}

namespace Tsf\Middleware;

use \Zend\Authentication\AuthenticationService;

class Navigation extends \Slim\Middleware extends

Page 92: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 92/135

g

{

  /**  * @var \Zend\Authentication\AuthenticationService

*/

  private $auth;

  public function __construct(AuthenticationService $auth)

  {

  $this->auth = $auth;  }

  public function call()

  {

  // . . .

  }

}

extends

namespace Tsf\Middleware;

use \Zend\Authentication\AuthenticationService;

class Navigation extends \Slim\Middleware extends

Page 93: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 93/135

g

{

  /**  * @var \Zend\Authentication\AuthenticationService

*/

  private $auth;

  public function __construct(AuthenticationService $auth)

  {

  $this->auth = $auth;  }

  public function call()

  {

  // . . .

  }

}

Constructor injectionFTW

extends

public function call()

{

  $app = $this->app;

$auth = $this->auth;

Page 94: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 94/135

  $auth = $this >auth;

  $req = $app->request();

  $home = array('caption' => 'Home', 'href' => '/');

  $admin = array('caption' => 'Admin', 'href' => '/admin');

  $login = array('caption' => 'Login', 'href' => '/login');

  $logout = array('caption' => 'Logout', 'href' => '/logout');

 

if ($auth->hasIdentity()) {

  $navigation = array($home, $admin, $logout);  } else {

  $navigation = array($home, $login);

  }

  // . . .

}

public function call()

{

  $app = $this->app;

$auth = $this->auth;Arrays ofnav items

Page 95: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 95/135

  $auth   $this >auth;

  $req = $app->request();

  $home = array('caption' => 'Home', 'href' => '/');

  $admin = array('caption' => 'Admin', 'href' => '/admin');

  $login = array('caption' => 'Login', 'href' => '/login');

  $logout = array('caption' => 'Logout', 'href' => '/logout');

 

if ($auth->hasIdentity()) {

  $navigation = array($home, $admin, $logout);  } else {

  $navigation = array($home, $login);

  }

  // . . .

}

nav items

public function call()

{

  $app = $this->app;

$auth = $this->auth;Arrays ofnav items

Page 96: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 96/135

  $auth   $this >auth;

  $req = $app->request();

  $home = array('caption' => 'Home', 'href' => '/');  $admin = array('caption' => 'Admin', 'href' => '/admin');

  $login = array('caption' => 'Login', 'href' => '/login');

  $logout = array('caption' => 'Logout', 'href' => '/logout');

 

if ($auth->hasIdentity()) {

  $navigation = array($home, $admin, $logout);  } else {

  $navigation = array($home, $login);

  }

  // . . .

}

nav items

Nav differs on auth st

public function call()

{

  // . . .

  $this->app->hook('slim.before.router', function () use (...) {

Page 97: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 97/135

$ pp ( , () ( ) {

  foreach ($navigation as &$link) {

  if ($link['href'] == $req->getPath()) {  $link['class'] = 'active';

  } else {

  $link['class'] = '';

  }

  }

  $app->view()

  ->appendData(array('navigation' => $navigation));

  }

  );

  $this->next->call();}

public function call()

{

  // . . .

  $this->app->hook('slim.before.router', function () use (...) {

Delicious hookgoodness

Page 98: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 98/135

pp ( , () ( ) {

  foreach ($navigation as &$link) {

  if ($link['href'] == $req->getPath()) {  $link['class'] = 'active';

  } else {

  $link['class'] = '';

  }

  }

  $app->view()

  ->appendData(array('navigation' => $navigation));

  }

  );

  $this->next->call();}

public function call()

{

  // . . .

  $this->app->hook('slim.before.router', function () use (...) {

Delicious hookgoodness

Page 99: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 99/135

pp ,

  foreach ($navigation as &$link) {

  if ($link['href'] == $req->getPath()) {  $link['class'] = 'active';

  } else {

  $link['class'] = '';

  }

  }

  $app->view()

  ->appendData(array('navigation' => $navigation));

  }

  );

  $this->next->call();}

Matchdispatched p

public function call()

{

  // . . .

  $this->app->hook('slim.before.router', function () use (...) {

Delicious hookgoodness

Page 100: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 100/135

  foreach ($navigation as &$link) {

  if ($link['href'] == $req->getPath()) {  $link['class'] = 'active';

  } else {

  $link['class'] = '';

  }

  }

  $app->view()

  ->appendData(array('navigation' => $navigation));

  }

  );

  $this->next->call();}

Matchdispatched p

Appen$navigatio

view

public function call()

{

  // . . .

  $this->app->hook('slim.before.router', function () use (...) {

Delicious hookgoodness

Page 101: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 101/135

  foreach ($navigation as &$link) {

  if ($link['href'] == $req->getPath()) {  $link['class'] = 'active';

  } else {

  $link['class'] = '';

  }

  }

  $app->view()

  ->appendData(array('navigation' => $navigation));

  }

  );

  $this->next->call();}

Matchdispatched p

Appen$navigatio

viewOn to the next!

Page 102: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 102/135

Views

Page 103: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 103/135

Two great tastesthat taste great together

Twig

Page 104: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 104/135

Twig

Page 105: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 105/135

Concise

Twig

Page 106: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 106/135

Concise

Template oriented

Twig

Page 107: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 107/135

Concise

Template oriented

Fast

Twig

Page 108: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 108/135

Concise

Template oriented

Fast

Multiple inheritance

Twig

Page 109: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 109/135

Concise

Template oriented

Fast

Multiple inheritance

Blocks

Twig

Page 110: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 110/135

Concise

Template oriented

Fast

Multiple inheritance

Blocks

Automatic escaping

Page 111: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 111/135

layout.htand

index.htm

Page 112: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 112/135

layout.html

Page 113: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 113/135

<title>{% block page_title %} {% endblock %}</tit

Page 114: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 114/135

<ul class="nav">

  {% for link in navigation %}

  <li class="{{link.class}}">

  <a href="{{link.href}}">{{link.caption}}<

  </li>

  {% endfor %}

</ul>

Page 115: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 115/135

<h1>365 Days of Photography</h1>

<h3>Photographer: Jeremy Kendall</h3>

{% block content %} {% endblock %}

<hr />

Page 116: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 116/135

index.html

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net{% endblock %}

{% block content %}

{% for image in images %}

Page 117: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 117/135

g g

<div class="row">

  <div class="span6">  <h2><a href="/{{image.day}}">{{image.day}}/365</a></h2  <p>

  <a href="/{{image.day}}">

  <img src="{{image.sizes.size.5.source}}" />

  </a>

  </p>  <p>Posted {{image.posted|date("m/d/Y")}}</p>

  </div></div>

{% else %}

<p>No images in project</p>

{% endfor %}{% endblock %}

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net{% endblock %}

{% block content %}

{% for image in images %}

extends

Page 118: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 118/135

<div class="row">

  <div class="span6">  <h2><a href="/{{image.day}}">{{image.day}}/365</a></h2  <p>

  <a href="/{{image.day}}">

  <img src="{{image.sizes.size.5.source}}" />

  </a>

  </p>  <p>Posted {{image.posted|date("m/d/Y")}}</p>

  </div></div>

{% else %}

<p>No images in project</p>

{% endfor %}{% endblock %}

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net{% endblock %}

{% block content %}

{% for image in images %}

extends

<title

Page 119: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 119/135

<div class="row">

  <div class="span6">  <h2><a href="/{{image.day}}">{{image.day}}/365</a></h2  <p>

  <a href="/{{image.day}}">

  <img src="{{image.sizes.size.5.source}}" />

  </a>

  </p>  <p>Posted {{image.posted|date("m/d/Y")}}</p>

  </div></div>

{% else %}

<p>No images in project</p>

{% endfor %}{% endblock %}

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net{% endblock %}

{% block content %}

{% for image in images %}

extends

<title

Page 120: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 120/135

<div class="row">

  <div class="span6">  <h2><a href="/{{image.day}}">{{image.day}}/365</a></h2  <p>

  <a href="/{{image.day}}">

  <img src="{{image.sizes.size.5.source}}" />

  </a>

  </p>  <p>Posted {{image.posted|date("m/d/Y")}}</p>

  </div></div>

{% else %}

<p>No images in project</p>

{% endfor %}{% endblock %}

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net{% endblock %}

{% block content %}

{% for image in images %}

extends

<title

iterator

Page 121: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 121/135

<div class="row">

  <div class="span6">  <h2><a href="/{{image.day}}">{{image.day}}/365</a></h2  <p>

  <a href="/{{image.day}}">

  <img src="{{image.sizes.size.5.source}}" />

  </a>

  </p>  <p>Posted {{image.posted|date("m/d/Y")}}</p>

  </div></div>

{% else %}

<p>No images in project</p>

{% endfor %}{% endblock %}

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net{% endblock %}

{% block content %}

{% for image in images %}

di l " "

extends

<title

iterator

Page 122: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 122/135

<div class="row">

  <div class="span6">  <h2><a href="/{{image.day}}">{{image.day}}/365</a></h2  <p>

  <a href="/{{image.day}}">

  <img src="{{image.sizes.size.5.source}}" />

  </a>

  </p>  <p>Posted {{image.posted|date("m/d/Y")}}</p>

  </div></div>

{% else %}

<p>No images in project</p>

{% endfor %}{% endblock %}

else

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net{% endblock %}

{% block content %}

{% for image in images %}

di l " "

extends

<title

iterator

Page 123: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 123/135

<div class="row">

  <div class="span6">  <h2><a href="/{{image.day}}">{{image.day}}/365</a></h2  <p>

  <a href="/{{image.day}}">

  <img src="{{image.sizes.size.5.source}}" />

  </a>

  </p>  <p>Posted {{image.posted|date("m/d/Y")}}</p>

  </div></div>

{% else %}

<p>No images in project</p>

{% endfor %}{% endblock %}

else

format

Page 124: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 124/135

login.htm

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net | Login{% endblock %}

{% block content %}

Page 125: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 125/135

{ }

<div class="row">

  <div class="span4">

  <h2>Login</h2>

  {% if flash.error %}

  <p style="color: red;">{{flash.error}}</p>

  {% endif %}  <form name="login" id="login" class="well" method="post">

  // Login form . . .  </form>

  </div>

</div>

{% endblock %}

{% extends 'layout.html' %}

{% block page_title %}365.jeremykendall.net | Login{% endblock %}

{% block content %}

Page 126: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 126/135

<div class="row">

  <div class="span4">

  <h2>Login</h2>

  {% if flash.error %}

  <p style="color: red;">{{flash.error}}</p>

  {% endif %}  <form name="login" id="login" class="well" method="post">

  // Login form . . .  </form>

  </div>

</div>

{% endblock %}

Page 127: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 127/135

The other viewswould be redundant

GOTO 0

Page 128: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 128/135

Small but powerfulGOTO 0

Page 129: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 129/135

p

Small but powerfulGOTO 0

Page 130: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 130/135

p

Excellent tools to write elegant code

Small but powerfulGOTO 0

Page 131: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 131/135

Excellent tools to write elegant code

Routing, middleware & hooks, views

Small but powerfulGOTO 0

Page 132: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 132/135

Excellent tools to write elegant code

Routing, middleware & hooks, views

I just scratched the surface

Read

Page 133: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 133/135

Slim: slimframework.com

Twig: twig.sensiolabs.org

Composer: getcomposer.org

MicroPHP Manifesto: microphp.org

Flaming Archer: http://git.io/rH0nrg

Page 134: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 134/135

Questions?

Thanks!

Page 135: Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

8/13/2019 Keeping It Small - Getting to know the Slim micro framework - @JeremyKendall

http://slidepdf.com/reader/full/keeping-it-small-getting-to-know-the-slim-micro-framework-jeremykendall 135/135

 [email protected]

@jeremykendall