asaokamei / slim4-starter
基于 Slim4 + PHP-DI 的我的启动项目。
0.1.5
2021-08-07 07:06 UTC
Requires
- ext-json: *
- aura/session: ^2.1
- filp/whoops: ^2.7
- monolog/monolog: ^2.0
- nyholm/psr7: ^1.3
- nyholm/psr7-server: ^1.0.0
- php-di/php-di: ^6.1
- slim/csrf: ^1.0
- slim/http: ^1.0
- slim/slim: ^4.0
- slim/twig-view: ^3.0
- vlucas/phpdotenv: ^5.2
Requires (Dev)
- phpunit/phpunit: ^8.5
README
这是一个为普通网站提供的启动项目,基于 slim/slim-skeleton。
使用:
- Slim4
- PHP-DI
- nyholm/psr7
- monolog
- Twig (使用
slim/twig-view) - Aura/Session
- filp/whoops
- vlucas/phpdotenv
许可
MIT 许可证
演示
安装。
git clone https://github.com/asaokamei/slim4-starter
cd slim4-starter
composer install
安装后运行演示。
cd public
php -S 127.0.0.1:8000 index.php
AbstractController
App\Controllers\AbstractController 提供了有用的功能,例如:
- 根据 HTTP 方法执行类方法。
- 将参数与输入值绑定。
- 修改输入值。
例如,当 HTTP 方法为 post 时,会执行 onPost 方法。
use App\Controllers\AbstractController; class WelcomeController extends AbstractController { public function action() {} // <- always executed, or public function onMethod() {} // <- executed based on HTTP method }
方法执行
- 如果存在
action方法,则始终执行action。 - 检查 HTTP 方法,并执行
on{$method}。 - 使用
_method传递参数来指定除 'GET' 和 'POST' 之外的 HTTP 方法。
绑定参数
对于路由 /users/{user_id},参数 $user_id 与路由变量 {user_id} 绑定。
class WelcomeController extends AbstractController { public function onGet($user_id) {} }
修改输入值
您可以使用控制器中的 arg{$InputKey} 方法修改输入值。
- 返回一个单一值以替换原始输入值,如
argTags中所示。 - 或者,返回一个关联数组以创建一个新条目,如
argUserId中所示。
// 'users/{user_id}/{tags} class WelcomeController extends AbstractController { public function onGet($user_id) {} private function argUserId($user_id) { return ['user' => $this->user->find($user_id)]; } private function argTags($tags) { return explode(',', $tags); } }
Twig 函数
为 Twig 提供额外的函数。
csrf_token()
为 Slim-Csrf 中的隐藏标签提供 CSRF 令牌(之前为 hidden_csrf_token())。
{{ csrf_token() }}
path(string $routeName, array $data = [], array $queryParams = [])
获取命名路由的 URL(与 slim/twig-view 中的 url_for() 相同)。
url(string $routeName, array $data = [], array $queryParams = [])
获取命名路由的完整 URL。(与 slim/twig-view 中的 full_url_for() 相同)。
来自 slim/twig-view 的更多函数。
is_current_url(string $routeName, array $data = [])
检查路由名称是否为当前 URL。
current_url(bool $withQueryString = false)
获取当前路径。
get_uri()
获取 Psr\Http\Message\UriInterface 对象。
base_path()
获取基本路径字符串。