11. Under MIT License
Copyright (c) 2004-2011 Fabien Potencier
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom
the Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall
be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
23. <?php
$crRoot = realpath(__DIR__ . '/..');
// register the autoloaders
require "{$crRoot}/SplClassLoader.php";
// Tell where Midgard stuff is
$midgardAutoloader = new SplClassLoader('Midgard', "{$crRoot}/src");
$midgardAutoloader->register();
// Tell where code from some other project is
$phpcrAutoloader = new SplClassLoader('PHPCR', "{$crRoot}/lib/PHPCR/src");
$phpcrAutoloader->register();
29. $ php app/check.php
********************************
* *
* Symfony requirements check *
* *
********************************
php.ini used by PHP: /etc/php5/cli/php.ini
** Mandatory requirements **
OK Checking that PHP version is at least 5.3.2 (5.3.5-1ubuntu7.2 installed)
OK Checking that the "date.timezone" setting is set
OK Checking that app/cache/ directory is writable
...
30. Dependencies are defined in the deps file
[AsseticBundle]
git=http://github.com/symfony/AsseticBundle.git
target=/bundles/Symfony/Bundle/AsseticBundle
version=v1.0.0RC2
31. Now you could just use the web dir
stuff in your regular web server.
32. However, we'll be using AppServer-in-PHP
$ pear channel-discover pear.indeyets.pp.ru
$ pear install indeyets/aip
33. Add AiP integration as dependency
[AppServerBundle]
git=http://github.com/bergie/MidgardAppServerBundle.git
target=Midgard/AppServerBundle
Install with $ php bin/vendors install --reinstall
42. How did this template get loaded?
/**
* @Template()
*/
...
return array('name' => $name);
⇒ Defaults to Bundle/Resources/views/Controller/action.html.twig
We could also do:
return $this->render(
'AcmeExampleBundle:Default:index.html.twig',
array('name' => $name)
);
43. Page generation process:
1. Match the URL to a route (/hello/{name})
/hello/World ⇒ /hello/{name}
2. Instantiate Controller
new AcmeExampleBundleControllerDefaultController
3. Run action method with arguments
->indexAction('World')
3. Controller returns a Response
Hello World!
56. $ php app/console router:debug
[router] Current routes
Name Method Pattern
_welcome ANY /
_demo_login ANY /demo/secured/login
_security_check ANY /demo/secured/login_check
_demo_logout ANY /demo/secured/logout
...
_configurator_final ANY /_configurator/final
acme_example_default_index ANY /example/hello/{name}
57. Supporting other output formats
/**
* @Route("/hello/{name}.{_format}", defaults={"_format"="html"})
*/
http://localhost:8001/hello/World and
http://localhost:8001/hello/World.html
will both work