PHP code example of youssefmansour9 / audit-trail-package
1. Go to this page and download the library: Download youssefmansour9/audit-trail-package library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
youssefmansour9 / audit-trail-package example snippets
use AuditTrail\AuditTrail;
// 1. Connect to your database
$pdo = new \PDO('mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4', 'root', '');
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
// 2. Create the audit_log table (see src/Infrastructure/Persistence/Schema/mysql.sql)
// or run: mysql -u root myapp < vendor/youssefmansour9/audit-trail-package/src/Infrastructure/Persistence/Schema/mysql.sql
// 3. Create the audit trail instance
$auditTrail = AuditTrail::createWithPdo($pdo);
// 4. Start tracking
$oldState = ['status' => 'pending', 'total' => 100.00];
$newState = ['status' => 'shipped', 'total' => 100.00];
$entry = $auditTrail->recordChange(
aggregateType: 'order',
aggregateId: '42',
action: 'UPDATE',
oldState: $oldState,
newState: $newState,
performedBy: 'user-abc-123',
);
// 5. Query history
$history = $auditTrail->getHistory('order', '42');
// CREATE — oldState must be null, newState must be provided
$auditTrail->recordChange('order', '42', 'CREATE', null, ['status' => 'pending'], 'user-1');
// UPDATE — both oldState and newState must be provided
$auditTrail->recordChange('order', '42', 'UPDATE', $oldState, $newState, 'user-1');
// DELETE — newState must be null, oldState must be provided
$auditTrail->recordChange('order', '42', 'DELETE', $oldState, null, 'user-1');
use AuditTrail\Application\DTO\ChangeRequest;
$auditTrail->recordBatch([
new ChangeRequest('order', '1', 'CREATE', null, ['status' => 'pending'], 'user-1'),
new ChangeRequest('order', '1', 'UPDATE', ['status' => 'pending'], ['status' => 'shipped'], 'user-1'),
new ChangeRequest('order', '1', 'DELETE', ['status' => 'shipped'], null, 'user-1'),
]);
// Full revision history of an entity (oldest first)
$history = $auditTrail->getHistory('order', '42');
foreach ($history as $entry) {
echo $entry->performedAt()->format('Y-m-d H:i:s') . ' — ' . $entry->action()->value;
}
// Specific entry by ID
$entry = $auditTrail->getEntry('uuid-here');
// All changes by a user (newest first)
$entries = $auditTrail->getEntriesByUser('user-abc-123');
// All changes in a date range
$entries = $auditTrail->getEntriesByDateRange(
new \DateTimeImmutable('-7 days'),
new \DateTimeImmutable('now'),
);
// Count changes for an entity
$count = $auditTrail->countByAggregate('order', '42');
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use AuditTrail\AuditTrail;
$logger = new Logger('audit');
$logger->pushHandler(new StreamHandler('/var/log/audit.log', Logger::INFO));
// Pass it to the factory
$auditTrail = AuditTrail::createWithPdo($pdo, $logger);
// Or wire manually with any PSR-3 logger
use AuditTrail\Infrastructure\RandomBytesIdGenerator;
$service = new AuditService(
new PDOAuditRepository($pdo),
$logger,
new RandomBytesIdGenerator(),
);
$auditTrail = new AuditTrail($service);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.