t-kuni / php-url-meta-mapper
基于URL的元数据映射器。
dev-master
2019-07-27 15:10 UTC
Requires
- php: ^7.0
Requires (Dev)
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-28 04:30:42 UTC
README
这个库是基于URL的元标签(例如SEO文本、OGP等)映射器。
此库的目的是将各种元标签设置收集到一个地方。
这对于经常修改元标签的网页很有用。
您可以通过流畅的接口简单地定义URL和元标签之间的映射。
安装说明
(待办事项)
特性
路由
$mapper = (new Mapper()) ->map(['/foo', '/bar'])->provide([ 'title' => 'foo bar page', ]); ->map(['/hoge', '/fuga'])->provide([ 'title' => 'hoge fuga page', ]); $meta = $mapper->resolve('https://example.com/foo'); var_dump($meta); // [ // 'title' => 'hoge fuga page' // ]
路由参数,查询字符串
$mapper = new Mapper(); $mapper->map('/foo/{id}')->provide(function($route, $query) { if ($route['id'] == 1) { return [ 'title' => "Routed One", ]; } else { return [ 'title' => "Routed Two", ]; } }); $meta = $mapper->resolve('https://example.com/foo/2?hoge=fuga');
- 正则表达式约束(待定)
钩子
全局钩子
(待定)
$mapper->global()->pre(function($route, $query, $binding) { return compact('route', 'query', 'binding'); });
预钩子
$m = (new Mapper()) ->map('/foo/{id}')->pre(function ($route, $query, $binding) { $route['id'] = 100; return compact('route', 'query', 'binding'); })->provide(function($route, $query) { return [ 'title' => 'id is ' . $route['id'], ]; }); $actual = $m->resolve('https://example.com/foo/2'); // [ // 'title' => 'id is 100' // ]
后钩子
(待定)
模板
$mapper = (new Mapper()) ->map('/foo/{id}')->pre(function ($route, $query, $binding) { $binding['fizz'] = 'bazz'; return compact('route', 'query', 'binding'); })->provide(function ($route, $query) { return [ 'title' => '{{fizz}}', ]; }); $meta = $mapper->resolve('https://example.com/foo/2?hoge=fuga');
别名
生成管理页面
(待定)
重用模板
(待定)
$mapper = new Mapper(); $mapper->map('/foo')->provide(M::template([ 'title' => '{{fizz}}' ])->as('temp-name')); $mapper->map('/bar')->provide(M::template('temp-name')); $meta = $mapper->resolve('https://example.com/foo/2?hoge=fuga');
定义模板
(待定)
$templates = [ 'top-page' => [ 'title' => 'this is top page', ], 'mypage' => [ 'title' => 'this is mypage', ] ]
贡献
构建
composer install --dev