devhelp / piwik-silex-provider
将devhelp/piwik-api集成到Silex中。允许创建用于piwik api方法的服务
0.1
2015-12-15 20:09 UTC
Requires
- php: >=5.3
- devhelp/piwik-api: >=0.4
- silex/silex: 1.*
Requires (Dev)
- phpunit/phpunit: 4.*
- squizlabs/php_codesniffer: 2.*
This package is not auto-updated.
Last update: 2024-09-14 18:26:09 UTC
README
安装
有关更多信息,请访问composer网站。
$ composer require 'devhelp/piwik-silex-provider:dev-master'
沙箱
示例代码可以在devhelp/piwik-silex-provider-sandbox找到。
用途
将Piwik API集成到Silex中。向依赖注入容器添加服务,以便使用Piwik API方法作为服务。它使用devhelp/piwik-api库 - 查阅其文档以获取更高级的用法。
用法
注册提供者
$app = new Silex\Application(); $app->register(new Devhelp\Silex\Piwik\PiwikApiServiceProvider(array( 'client' => 'my_piwik.client', 'api' => array( 'reader' => array( 'url' => 'http://my_piwik_instance.piwik.pro', 'default_params' => array( 'token_auth' => 'piwik_token_auth', 'idSite' => 123 ) ) ) )));
创建设置为'client'的piwik客户端服务
此示例使用PiwikGuzzleClient类,该类负责向Piwik发送http请求。您可以通过在项目中包含devhelp/piwik-api-guzzle来包含此扩展
//'guzzle' service must implement GuzzleHttp\ClientInterface $app['my_piwik.client'] = $app->share(function () use ($app) { return new Devhelp\Piwik\Api\Guzzle\Client\PiwikGuzzleClient($app['guzzle'])); });
在您的用例中使用API方法
将服务添加到容器中
$app['my_service'] = $app->share(function () use ($app) { return new Acme\DemoBundle\Service\MyService($app['devhelp_piwik.api']); });
示例服务定义
namespace Acme\DemoBundle\Service; use Devhelp\Piwik\Api\Api; class MyService { /** * @var Api */ private $piwikApi; public function __construct(Api $piwikApi) { $this->piwikApi = $piwikApi; } public function doSomething() { //... $this->piwikApi->getMethod('PiwikPlugin.pluginAction')->call(); //... } }
定义在运行时解析的API参数
您可以将服务设置为params。如果您这样做,则服务将在运行时用于解析参数。例如,有一个会返回已登录用户的token_auth的服务
$app = new Silex\Application(); $app->register(new Devhelp\Silex\Piwik\PiwikApiServiceProvider(array( 'client' => 'my_piwik.client', 'api' => array( 'reader' => array( 'url' => 'http://my_piwik_instance.piwik.pro', 'default_params' => array( 'token_auth' => 'my_token_auth_provider', 'idSite' => 123 ) ) ) )));
my_token_auth_provider服务定义(假设SecurityServiceProvider已注册)
$app['my_token_auth_provider'] = $app->share(function () use ($app) { return new Acme\DemoBundle\Param\MyTokenAuthProvider($app['security.token_storage']); });
MyTokenAuthProvider类定义(假设User类有getPiwikToken方法)
namespace Acme\DemoBundle\Param; use Devhelp\Piwik\Api\Param\Param; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; class MyTokenAuthProvider implements Param { /** * @var TokenStorageInterface */ private $tokenStorage; public function __construct(TokenStorageInterface $tokenStorage) { $this->tokenStorage = $tokenStorage; } public function value() { $token = $this->tokenStorage->getToken(); return $token instanceof TokenInterface ? $token->getUser()->getPiwikToken() : null; } }
将API方法定义为服务
$app['my_piwik_method'] = $app->share(function () use ($app) { return $app['devhelp_piwik.api']->getMethod('VisitFrequency.get'); });
反馈/请求
如果您认为某些内容缺失或需要修复,请随时创建一个问题。欢迎反馈!
致谢
由:devhelp.pl提供。