1. Go to this page and download the library: Download sawmainek/apitoolz 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/ */
sawmainek / apitoolz example snippets
// app/Services/CustomSmsService.php
namespace App\Services;
use Sawmainek\Apitoolz\Contracts\SmsSenderInterface;
use Illuminate\Support\Facades\Log;
class CustomSmsService implements SmsSenderInterface
{
public function send(string $to, string $message): void
{
// Use your preferred SMS provider (e.g., Twilio, ClickSend, etc.)
// Example log output for testing
Log::info("Sending SMS to {$to}: {$message}");
// You can integrate your SMS provider's API here
}
}
// app/Providers/AppServiceProvider.php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Sawmainek\Apitoolz\Contracts\SmsSenderInterface;
use App\Services\CustomSmsService;
use Sawmainek\Apitoolz\Notifications\Channels\SmsChannel;
use Illuminate\Support\Facades\Notification;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Bind the SmsSenderInterface to the CustomSmsService implementation
$this->app->bind(SmsSenderInterface::class, CustomSmsService::class);
}
public function boot()
{
// Extend the notification system to
namespace App\Observers;
use Sawmainek\Apitoolz\Models\User;
use Illuminate\Support\Facades\Log;
//use App\Jobs\NotifyUserUpdateJob;
class UserObserver
{
public function creating(User $user)
{
Log::info('Before creating user', ['data' => $user->toArray()]);
// $user->status = $user->status ?? 'pending'; // Set default status
}
public function created(User $user)
{
Log::info('After creating user', ['id' => $user->id]);
// dispatch(new NotifyUserUpdateJob($user)); // Trigger async job
}
public function updating(User $user)
{
Log::info('Before updating user', ['id' => $user->id]);
}
public function updated(User $user)
{
Log::info('After updating user', ['id' => $user->id]);
}
public function deleting(User $user)
{
Log::info('Before deleting user', ['id' => $user->id]);
}
public function deleted(User $user)
{
Log::info('After deleting user', ['id' => $user->id]);
}
public function restoring(User $user)
{
Log::info('Before restoring user', ['id' => $user->id]);
}
public function restored(User $user)
{
Log::info('After restoring user', ['id' => $user->id]);
}
}
namespace App\Jobs;
use Sawmainek\Apitoolz\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
class NotifyUserUpdateJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(public User $user) {}
public function handle()
{
Log::info('Async notification triggered for user', ['id' => $this->user->id]);
// Add notification logic here
}
}