## Getting Started
### Minimal Steps to First Use
1. **Install the Package**
```bash
composer require baks-dev/megamarket
php artisan vendor:publish --provider="BaksDev\Megamarket\MegamarketServiceProvider"
config/megamarket.php.Set Up Environment
.env with Megamarket API credentials (e.g., MEGAMARKET_TOKEN, MEGAMARKET_API_URL).MESSENGER_TRANSPORT_DSN=redis://localhost:6379/0
Run Asset Installation
php artisan baks:assets:install
First API Call (Example: Fetch Products)
use BaksDev\Megamarket\Facades\Megamarket;
$products = Megamarket::products()->fetch();
dd($products);
Test with Queues
use BaksDev\Megamarket\Jobs\SyncCatalog;
SyncCatalog::dispatch()->onQueue('megamarket');
php artisan queue:work
Megamarket facade for common endpoints (e.g., products(), orders(), categories()).
$orders = Megamarket::orders()->withStatus('pending')->fetch();
// app/Providers/MegamarketServiceProvider.php
public function boot()
{
Megamarket::extend('custom', function () {
return new CustomMegamarketClient();
});
}
// Dispatch a job to fetch and store products
SyncProductsJob::dispatch()->onQueue('megamarket_products');
config/megamarket.php):
$messenger->transport('megamarket')
->retryStrategy()
->maxRetries(3)
->delay(1000);
// app/Listeners/HandleMegamarketOrder.php
public function handle(OrderCreatedEvent $event)
{
// Trigger custom logic (e.g., notify admin, update inventory)
}
event(new MegamarketOrderProcessed($order));
config(['megamarket.tokens.default' => env('MEGAMARKET_TOKEN')]);
config/caching or .env files to switch between dev/staging/prod.laravel-messenger to bridge Symfony Messenger with Laravel’s queue system:
// config/messenger.php
'transports' => [
'megamarket' => [
'dsn' => env('REDIS_URL'),
'options' => ['queue' => 'megamarket'],
'retry_strategy' => [
'max_retries' => 3,
'delay' => 1000,
],
],
],
// app/Console/Kernel.php
protected $commands = [
\BaksDev\Megamarket\Command\SyncCatalogCommand::class,
];
$products = app(\BaksDev\Megamarket\Repository\ProductRepository::class)->findAll();
// Example: Convert Doctrine query to Eloquent
$builder = Megamarket::products()->getQueryBuilder();
$eloquentQuery = Product::query()->whereRaw($builder->getDQL());
$client = Mockery::mock(\BaksDev\Megamarket\Client::class);
$client->shouldReceive('fetchProducts')->andReturn([]);
$this->app->instance(\BaksDev\Megamarket\Client::class, $client);
public function test_marketplace_integration()
{
$response = $this->get('/api/megamarket/products');
$response->assertStatus(200);
}
Symfony-Laravel Dependency Conflicts
symfony/http-client) may conflict with Laravel’s versions.composer.json:
"require": {
"symfony/http-client": "^6.0",
"symfony/messenger": "^6.0"
}
HttpClient for API calls instead of Symfony’s.Queue Transport Mismatches
laravel-messenger to use Laravel’s queue adapters:
$messenger->transport('megamarket')
->dsn('doctrine://default') // Use Laravel's database queue
->options(['queue' => 'megamarket']);
Token Management Quirks
// app/Providers/MegamarketServiceProvider.php
Megamarket::extend('token_refresh', function () {
return new RefreshableTokenHandler();
});
Doctrine ORM in Laravel
// Convert Doctrine query to Eloquent
$doctrineQuery = $entityManager->createQuery('SELECT p FROM Product p');
$eloquentQuery = Product::query()->whereRaw($doctrineQuery->getSQL());
Undocumented Features
vendor/baks-dev/megamarket/src/) and write internal docs:
php artisan ide-helper:generate --nowrite --dir=vendor/baks-dev/megamarket
Enable Messenger Debugging
// config/messenger.php
'debug' => env('APP_DEBUG', false),
storage/logs/messenger.log.Symfony Dumpers
var_dump() or dd() for debugging:
use Symfony\Component\VarDumper\VarDumper;
VarDumper::dump($variable);
Queue Worker Logging
php artisan queue:work --once --verbose
API Response Inspection
Megamarket::setDebug(true);
$response = Megamarket::products()->fetch();
Custom API Endpoints
Megamarket::extend('custom_endpoint', function () {
return new CustomEndpointClient();
});
Event Listeners
OrderCreated, ProductUpdated):
event(new MegamarketOrderCreated($order));
Queue Handlers
$messenger->getBus()->addHandler
How can I help you explore Laravel packages today?