t-kuni/php-url-meta-mapper

基于URL的元数据映射器。

dev-master 2019-07-27 15:10 UTC

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