Installation
composer require binzram/crud-checker
Add the service provider to config/app.php:
'providers' => [
// ...
Binzram\CrudChecker\CrudCheckerServiceProvider::class,
],
Basic Usage Register a model to check CRUD operations:
use Binzram\CrudChecker\CrudChecker;
$checker = app(CrudChecker::class);
$checker->registerModel(\App\Models\User::class);
First Use Case
Enable logging in config/crud-checker.php:
'enabled' => env('CRUD_CHECKER_ENABLED', false),
'log_path' => storage_path('logs/crud-checker.log'),
Set CRUD_CHECKER_ENABLED=true in .env and trigger CRUD operations (e.g., User::create()). Check the log file for recorded operations.
Model Registration Register models in a service provider or boot method:
public function boot()
{
$checker = app(CrudChecker::class);
$checker->registerModel(\App\Models\Post::class);
$checker->registerModel(\App\Models\Comment::class);
}
Conditional Logging Use middleware to toggle logging dynamically:
$checker->setEnabled(request()->has('debug_crud'));
Event-Based Hooks Listen for CRUD operations via events (if the package supports it):
Event::listen('crud-checker.recorded', function ($event) {
// Custom logic for recorded operations
});
API/Controller Layer Log CRUD operations in controllers:
public function store(Request $request)
{
$checker = app(CrudChecker::class);
$checker->logOperation('create', User::class, $request->all());
return User::create($request->all());
}
Seeding/Testing Disable logging during tests:
$checker->setEnabled(false);
Performance Overhead
setEnabled(false) in live environments.App\Models\SystemLog).Log File Management
storage_path('logs/crud-checker.log') is writable.Model Polymorphism
Model::class) to avoid duplicates.Sensitive Data
$checker->logOperation('update', User::class, array_except($data, ['password']));
Namespace Conflicts
App\Models\User), ensure the FQCN is used:
$checker->registerModel(\App\Models\User::class); // Not 'User'
Debugging
registerModel() is called before operations.Extension Points
Psr\Log\LoggerInterface:
$this->app->bind(\Psr\Log\LoggerInterface::class, function () {
return new CustomLogger();
});
Custom Formatting
$checker->setLogger(new JsonLogger());
Environment-Specific Config
config/crud-checker.php to toggle logging per environment:
'enabled' => app()->environment('local'),
Testing
$this->app->instance(CrudChecker::class, Mockery::mock(CrudChecker::class));
How can I help you explore Laravel packages today?