phpab / analytics-pdo
Store PhpAb tests participations using PDO DBAL.
Requires
- php: ~5.5|~7.0
- ext-pdo: *
- phpab/phpab: dev-master
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.*
- squizlabs/php_codesniffer: ^2.5
Suggests
- ext-mysql: Required module to store tests in MySql server
- ext-pgsql: Required module to store tests in PostgreSQL servers
- ext-sqlite3: Required module to store tests in sqlite3 databases
This package is not auto-updated.
Last update: 2024-10-26 18:54:45 UTC
README
Store PhpAb tests participations using PDO DBAL.
Install
Via Composer
$ composer require phpab/analytics-pdo
Make sure you have installed the PDO driver you intend to use too.
Usage
This example assumes you have a sqlite3 database created in the same folder where this script is located. The sqlite3 definition can be found here.
use PhpAb\Storage\Cookie; use PhpAb\Participation\Manager; use PhpAb\Analytics\DataCollector\Generic; use PhpAb\Event\Dispatcher; use PhpAb\Participation\Filter\Percentage; use PhpAb\Variant\Chooser\RandomChooser; use PhpAb\Engine\Engine; use PhpAb\Test\Test; use PhpAb\Variant\SimpleVariant; use PhpAb\Variant\CallbackVariant; $storage = new Cookie('phpab'); $manager = new Manager($storage); $analyticsData = new Generic(); $dispatcher = new Dispatcher(); $dispatcher->addSubscriber($analyticsData); $filter = new Percentage(50); $chooser = new RandomChooser(); $engine = new Engine($manager, $dispatcher, $filter, $chooser); $test = new Test('foo_test'); $test->addVariant(new SimpleVariant('_control')); $test->addVariant(new CallbackVariant('v1', function () { echo 'v1'; })); $test->addVariant(new CallbackVariant('v2', function () { echo 'v2'; })); $test->addVariant(new CallbackVariant('v3', function () { echo 'v3'; })); // Add some tests $engine->addTest($test); $engine->start(); // Here starts PDO interaction $pdo = new PDO('sqlite:./phpab.db'); $options = [ 'runTable' => 'Run', 'testIdentifierField' => 'testIdentifier', 'variantIdentifierField' => 'variantIdentifier', 'userIdentifierField' => 'userIdentifier', 'scenarioIdentifierField' => 'scenarioIdentifier', 'runIdentifierField' => 'runIdentifier', 'createdAtField' => 'createdAt' ]; // Inject PDO instance together with Analytics Data $analytics = new \PhpAb\Analytics\PDO( $analyticsData->getTestsData(), $pdo, $options ); // Store it providing a user identifier and a scenario // typically a URL or a controller name $analytics->store('1.2.3.4-abc', 'homepage.php');
Change log
Please see CHANGELOG for more information what has changed recently.
Testing
$ composer test
Contributing
Please see CONTRIBUTING and CONDUCT for details.
Security
If you discover any security related issues, please open an issue in the issue tracker. We realize this is not ideal but it's the fastest way to get the issue solved.
Credits
License
The MIT License (MIT). Please see License File for more information.