{"id":26452072,"url":"https://github.com/uzulla/powerpdo","last_synced_at":"2026-04-16T07:31:49.719Z","repository":{"id":282850065,"uuid":"949803528","full_name":"uzulla/PowerPdo","owner":"uzulla","description":"THIS IS EXPERIMENTAL, DO NOT USE IT.","archived":false,"fork":false,"pushed_at":"2025-03-17T08:48:06.000Z","size":26,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T09:38:30.039Z","etag":null,"topics":["experimental","pdo","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/uzulla.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-17T06:57:53.000Z","updated_at":"2025-03-17T08:48:10.000Z","dependencies_parsed_at":"2025-03-17T09:49:16.284Z","dependency_job_id":null,"html_url":"https://github.com/uzulla/PowerPdo","commit_stats":null,"previous_names":["uzulla/powerpdo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzulla%2FPowerPdo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzulla%2FPowerPdo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzulla%2FPowerPdo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/uzulla%2FPowerPdo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/uzulla","download_url":"https://codeload.github.com/uzulla/PowerPdo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244267744,"owners_count":20425888,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["experimental","pdo","php"],"created_at":"2025-03-18T17:26:03.717Z","updated_at":"2026-04-16T07:31:49.694Z","avatar_url":"https://github.com/uzulla.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PowerPdo\n\nA PHP library that extends PDO to provide comprehensive SQL query logging with debug information, supporting PHP versions 7.4-8.3.\n\n## Features\n\n- Extends PDO with full compatibility\n- Logs all database operations with detailed context\n- Captures debug backtrace to show where queries are executed\n- Processes and modifies queries before execution\n- Modular design with separate components\n- Compatible with PHP 7.4-8.3\n- Comprehensive test suite with SQLite\n\n## Installation\n\n```bash\ncomposer require php-pdo-logger/php-pdo-logger\n```\n\n## Requirements\n\n- PHP 7.4 or higher\n- PDO extension\n- SQLite extension (for running tests)\n\n## Basic Usage\n\n```php\n\u003c?php\nrequire_once 'vendor/autoload.php';\n\nuse PowerPdo\\Core\\PDOLogger;\nuse PowerPdo\\Logging\\FileLogger;\n\n// Create a logger that writes to a file\n$logger = new FileLogger('/path/to/sql.log');\n\n// Create PDO instance with logger\n$pdo = new PDOLogger('sqlite::memory:', null, null, null, $logger);\n\n// Use like a normal PDO instance\n$pdo-\u003eexec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)');\n\n$stmt = $pdo-\u003eprepare('INSERT INTO users (name) VALUES (:name)');\n$stmt-\u003eexecute(['name' =\u003e 'John Doe']);\n\n$users = $pdo-\u003equery('SELECT * FROM users')-\u003efetchAll(PDO::FETCH_ASSOC);\n```\n\n## Advanced Usage: Query Processing\n\n```php\n\u003c?php\nuse PowerPdo\\Core\\PDOLogger;\nuse PowerPdo\\Logging\\FileLogger;\nuse PowerPdo\\QueryProcessor\\FilterableQueryProcessor;\n\n// Create a query processor that adds comments to queries\n$processor = new FilterableQueryProcessor();\n$processor-\u003eaddFilter(function(string $query): string {\n    return \"/* Application: MyApp */ $query\";\n});\n\n// Add another filter\n$processor-\u003eaddFilter(function(string $query): string {\n    return \"$query /* Timestamp: \" . time() . \" */\";\n});\n\n// Create PDO instance with logger and processor\n$pdo = new PDOLogger(\n    'sqlite::memory:',\n    null,\n    null,\n    null,\n    new FileLogger('/path/to/sql.log'),\n    $processor\n);\n\n// The query will be processed by all filters before execution\n$stmt = $pdo-\u003eprepare('SELECT * FROM users');\n```\n\n## Log Format\n\nThe logs are written in JSON format with the following structure:\n\n```json\n{\n    \"timestamp\": \"2025-03-17 05:50:52\",\n    \"action\": \"prepare\",\n    \"caller\": \"/path/to/file.php:24\",\n    \"data\": {\n        \"query\": \"SELECT * FROM users WHERE id = :id\",\n        \"options\": [],\n        \"trace\": [\n            {\n                \"file\": \"/path/to/file.php\",\n                \"line\": 24,\n                \"function\": \"prepare\",\n                \"class\": \"PowerPdo\\\\Core\\\\PDOLogger\",\n                \"type\": \"-\u003e\"\n            }\n        ]\n    }\n}\n```\n\n## Available Loggers\n\n- `FileLogger`: Logs to a file in JSON format\n- `NullLogger`: Disables logging (useful for production or testing)\n\n## Available Query Processors\n\n- `DefaultQueryProcessor`: Passes queries through unchanged\n- `FilterableQueryProcessor`: Allows adding multiple filters to modify queries\n\n## Version Compatibility\n\nFor detailed information about compatibility with different PHP versions, see [COMPATIBILITY.md](COMPATIBILITY.md) and [VERSION_SUPPORT.md](VERSION_SUPPORT.md).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuzulla%2Fpowerpdo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuzulla%2Fpowerpdo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuzulla%2Fpowerpdo/lists"}