Laravel
Learn how to integrate Dub with Laravel.
1. Prerequisites
To follow this guide, you will need to:
2. Install and initialize the Dub PHP SDK
Install
To install the Dub PHP SDK, run the following command:
composer require dub/dub-php
Configuration
In your .env
file, add your Dub API key:
DUB_API_KEY=your_api_key
In your config/services.php
file, add the following:
'dub' => [
'api_key' => env('DUB_API_KEY'),
],
Initialize
You can now create an instance of the Dub
class and pass in your API key:
use Dub\Dub;
use Dub\Components\Security;
$security = new Security(config('services.dub.api_key'));
$dub = Dub::builder()->setSecurity($security->token)->build();
// create a link
$dub->links->create(...);
Service Container (Optional)
If you want to be able to inject the Dub
class via the service container, add this to the register
method of your AppServiceProvider.php
:
$this->app->bind(Dub::class, function ($app) {
$security = new Security($app['config']->get('services.dub.api_key'));
return Dub::builder()->setSecurity($security->token)->build();
});
You can then inject the authenticated Dub
instance throughout your application:
use Dub\Laravel\Dub;
class LinkController extends Controller {
public function createLink(Dub $dub) {
// Now you can use the SDK instance
$dub->links->create(...);
}
}
3. Create link
Let’s create a short link using the Dub Laravel SDK.
use Dub\Models\Operations;
class LinkController extends Controller {
public function createLink() {
$dub = new Dub();
try {
$request = new Operations\CreateLinkRequestBody(
url: 'https://google.com'
);
$response = $dub->links->create($request);
if ($response->linkSchema !== null) {
// handle response
}
} catch (Throwable $e) {
// handle exception
}
}
}
Optionally, you can also pass an externalId
field to associate the link with a unique identifier in your own system.
use Dub\Models\Operations;
class LinkController extends Controller
{
public function createLinkWithExternalId()
{
$dub = new Dub();
try {
$request = new Operations\CreateLinkRequestBody(
url: 'https://google.com',
externalId: '12345'
);
$response = $dub->links->create($request);
if ($response->linkSchema !== null) {
// handle response
}
} catch (Throwable $e) {
// handle exception
}
}
}
This will let you easily update the link or retrieve analytics for it later on using the externalId
instead of the Dub linkId
.
4. Upsert link
The Dub Laravel SDK provides a method to upsert a link – where an existing link is updated if it exists, or a new link is created if it doesn’t.
use Dub\Models\Operations;
class LinkController extends Controller
{
public function upsertLink()
{
$dub = new Dub();
try {
$request = new Operations\UpsertLinkRequestBody(
url: 'https://google.com'
);
$response = $dub->links->upsert($request);
if ($response->linkSchema !== null) {
// handle response
}
} catch (Throwable $e) {
// handle exception
}
}
}
This way, you won’t have to worry about checking if the link already exists when you’re creating it.
5. Update link
To update an existing link using the Dub Laravel SDK, you can either use the link’s linkId
or externalId
.
use Dub\Models\Operations;
class LinkController extends Controller
{
public function updateLink()
{
$dub = new Dub();
try {
$request = new Operations\UpdateLinkRequest();
$request->linkId = 'cly2p8onm000cym8200nfay7l';
$request->requestBody = new Operations\UpdateLinkRequestBody();
$request->requestBody->url = 'https://google.us';
$response = $dub->links->update($request);
if ($response->linkSchema !== null) {
echo $response->linkSchema->shortLink;
}
} catch (Throwable $e) {
// handle exception
}
}
}
6. Retrieve analytics for link
You can also retrieve analytics for a link using the Dub Laravel SDK.
use Dub\Models\Operations;
class LinkController extends Controller
{
public function retrieveAnalytics()
{
$dub = new Dub();
try {
$request = new Operations\RetrieveAnalyticsRequest();
$request->linkId = 'clmnr6jcc0005l308q9v56uz1';
$request->interval = Operations\Interval::SevenD;
$request->groupBy = Operations\GroupBy::Timeseries;
$response = $dub->analytics->retrieve($request);
if ($response->oneOf !== null) {
// Handle the response
print_r($response->oneOf);
}
} catch (Throwable $e) {
// handle exception
}
}
}
7. Examples
Was this page helpful?