As your Silex application grows, you may wish to begin organizing your controllers in a more formal fashion. Silex can use controller classes out of the box, but with a bit of work, your controllers can be created as services, giving you the full power of dependency injection and lazy loading.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env php | |
<?php | |
$app = require __DIR__ . '/../app/bootstrap.php'; | |
$routes = $app['routes']->all(); | |
$data = array(); | |
foreach($routes as $route) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Ideas for parameter converters | |
* | |
* I've used the word argument here rather than convert or converter, | |
* because there may not be any converting as such. It may be that things are | |
* plucked out of the request etc | |
* | |
* The idea being that some of the controller arguments come from the url, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class RussianDependencyRoulettePimple extends Pimple | |
{ | |
public function offsetGet($id) | |
{ | |
return parent::offsetGet(reset(shuffle($this->keys()))); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Demo\Controller; | |
use Silex\ControllerResolver as BaseControllerResolver; | |
use Symfony\Component\HttpFoundation\Request; | |
class ControllerResolver extends BaseControllerResolver | |
{ | |
/** |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Amazing static site generator | |
# Works for PHP and HTML sites | |
# Assumes web root to be in /web | |
# Dumps the site into a directory named "static" | |
# | |
# rm -rf static/*; seq 1 4 | time parallel -j 4 ./build.sh 900{} | |
PORT=${1:-9999} | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Service Provider | |
$app->register(new Via\Content\ContentServiceProvider()); | |
// Route | |
$app->get('/{id}', function($id) use ($app) { | |
return $app['content.id_checker']->check($id); | |
}); | |
// and in .... ContentServiceProvider |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
use Silex\Application; | |
use Demo\Entity\Post; | |
use Demo\Controller\PostController; | |
$app = new Application; | |
$app['route_class'] = 'CustomRoute'; | |
$app['dispatcher']->addSubscriber(new TemplateRenderingListener($app)); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace Demo { | |
require __DIR__."/vendor/autoload.php"; | |
use Nocarrier\Hal; | |
class Resource extends Hal {} | |
class ResourceResponse |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
require "vendor/autoload.php"; | |
class MyClass | |
{ | |
public function __construct($a = 1) | |
{ | |
echo "__construct called \$a = $a\n"; |