Silex:Usage使用用例(一)
2016-07-27 16:15
274 查看
1/安装
composer require silex/silex:~2.0
2/Web服务 : nginx的配置 http://silex.sensiolabs.org/doc/master/web_servers.html
3/引导:
require_once DIR.’/../vendor/autoload.php’;
4/路由:
5/动态路由:
创建另一个控制器来支持展示私人博客帖子。
6/POST路由:
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
7/其他方法
8/路由变量:
可以在路由中定义变量:
app−>get(′/blog/id′,function(id) {
// …
});
9/路由变量转换器:
在路由变量进入controller判断之前,还可以添加一些转换器
app−>get(′/user/id′,function(id) {
// …
})->convert(‘id’, function (id) { return (int)id; });
10/Requirements请求
11/条件
composer require silex/silex:~2.0
目录结构: ├── composer.json ├── composer.lock ├── vendor │ └── ... └── web └── index.php
2/Web服务 : nginx的配置 http://silex.sensiolabs.org/doc/master/web_servers.html
3/引导:
require_once DIR.’/../vendor/autoload.php’;
create a instance of Silex\Application 建立一个实例 定义controller后调用 run 方法。 $app['debug'] = true; 开启debug
4/路由:
在silex中你定义一个路由,当该路由被访问时调用响应的controller,一个路由组成为: 1,pattern:路由pattern定义了指向资源的路径,一个pattern可以包含多条部分。 2 , Method:HTTP 方法:GET/POST/PUT等 一个controller使用如下的闭包定义: function () { // ... do something } 闭包的返回值成为页面的一部分。 GET路由的例子: $blogPosts = array( 1 => array( 'date' => '2011-03-29', 'author' => 'igorw', 'title' => 'Using Silex', 'body' => '...', ),); $app->get('/blog', function () use ($blogPosts) { $output = ''; foreach ($blogPosts as $post) { $output .= $post['title']; $output .= '<br />'; } return $output; }); 访问/blog 将返回一个blog post title 的列表。
5/动态路由:
创建另一个控制器来支持展示私人博客帖子。
$app->get('/blog/{id}', function (Silex\Application $app, $id) use ($blogPosts) { if (!isset($blogPosts[$id])) { $app->abort(404, "Post $id does not exist."); } $post = $blogPosts[$id]; return "<h1>{$post['title']}</h1>". "<p>{$post['body']}</p>"; });
6/POST路由:
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$app->post('/feedback', function (Request $request) { $message = $request->get('message'); mail('feedback@yoursite.com', '[YourSite] Feedback', $message); return new Response('Thank you for your feedback!', 201); });
7/其他方法
8/路由变量:
可以在路由中定义变量:
app−>get(′/blog/id′,function(id) {
// …
});
还可以定义多个变量 $app->get('/blog/{postId}/{commentId}', function ($postId, $commentId) { // ... }); 还可以这样(注意参数位置) $app->get('/blog/{postId}/{commentId}', function ($commentId, $postId) { // ... }); 你还可以请求当前的Request请求和Application对象 $app->get('/blog/{id}', function (Application $app, Request $request, $id) { // ... });
9/路由变量转换器:
在路由变量进入controller判断之前,还可以添加一些转换器
app−>get(′/user/id′,function(id) {
// …
})->convert(‘id’, function (id) { return (int)id; });
这在你想转换路由变量成为对象以便在不同控制器中重复转换编码时很有用。 $userProvider = function ($id) { return new User($id); }; $app->get('/user/{user}', function (User $user) { // ... })->convert('user', $userProvider); $app->get('/user/{user}/edit', function (User $user) { // ... })->convert('user', $userProvider); 还可以接受Requset请求作为第二参数 $callback = function ($post, Request $request) { return new Post($request->attributes->get('slug')); }; $app->get('/blog/{id}/{slug}', function (Post $post) { // ... })->convert('post', $callback);简直碉堡了 转换器还可以被定义为service。 use Doctrine\Common\Persistence\ObjectManager; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class UserConverter { private $om; public function __construct(ObjectManager $om) { $this->om = $om; } public function convert($id) { if (null === $user = $this->om->find('User', (int) $id)) { throw new NotFoundHttpException(sprintf('User %d does not exist', $id)); } return $user; } } service 需要在 application 中注册,它的convert方法将被作为转换器 $app['converter.user'] = function () { return new UserConverter(); }; $app->get('/user/{user}', function (User $user) { // ... })->convert('user', 'converter.user:convert');
10/Requirements请求
11/条件
相关文章推荐
- java-WEB中的监听器Lisener
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- 创业如何选择WEB开发语言
- Erlang实现的一个Web服务器代码实例
- 防止网页脚本病毒执行的方法-from web
- 自学成才的秘密:115个 web Develop 资源
- 使用批处理修改web打印设置笔记 适用于IE
- Apache Web让JSP“动”起来
- web下载的ActiveX控件自动更新
- 推荐六款WEB上传组件性能测试与比较第1/10页
- 关于三种主流WEB架构的思考
- 使用 Iisext.vbs 列出 Web 服务扩展文件的方法
- 使用 Iisext.vbs 删除 Web 服务扩展文件的方法
- 使用 iisext.vbs 禁用 Web 服务扩展的方法
- 用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
- web标准知识——从p开始,循序渐进
- web标准知识――用途相似的标签