PHP code example of elliottlawson / daytona-php-sdk
1. Go to this page and download the library: Download elliottlawson/daytona-php-sdk 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/ */
elliottlawson / daytona-php-sdk example snippets
use ElliottLawson\Daytona\DTOs\Config;
$config = new Config(
apiUrl: 'https://api.daytona.io',
apiKey: 'your-api-key',
organizationId: 'your-org-id'
);
use ElliottLawson\Daytona\DaytonaClient;
$client = new DaytonaClient([
'api_url' => 'https://api.daytona.io',
'api_key' => 'your-api-key',
'organization_id' => 'your-org-id' // optional
]);
use Daytona;
use ElliottLawson\Daytona\DTOs\SandboxCreateParameters;
// Create a sandbox
$sandbox = Daytona::createSandbox(new SandboxCreateParameters(
language: 'php',
snapshot: 'laravel-php84',
));
// Execute commands
$result = Daytona::executeCommand($sandbox->getId(), 'composer install');
// Work with files
Daytona::writeFile($sandbox->getId(), '/workspace/test.txt', 'Hello World');
$content = Daytona::readFile($sandbox->getId(), '/workspace/test.txt');
// Delete sandbox
Daytona::deleteSandbox($sandbox->getId());
use ElliottLawson\Daytona\DaytonaClient;
use ElliottLawson\Daytona\DTOs\Config;
// Using dependency injection
public function __construct(DaytonaClient $client)
{
$this->daytonaClient = $client;
}
// Using the service container
$client = app(DaytonaClient::class);
// Using without parameters (pulls from .env via config)
$client = new DaytonaClient();
// Using the config from container
$config = app(Config::class);
$client = new DaytonaClient($config);
use ElliottLawson\Daytona\DaytonaClient;
use ElliottLawson\Daytona\DTOs\Config;
// Using typed configuration (recommended for type safety)
$config = new Config(
apiUrl: 'https://api.daytona.io',
apiKey: 'your-api-key',
organizationId: 'your-org-id'
);
$client = new DaytonaClient($config);
use ElliottLawson\Daytona\DTOs\SandboxCreateParameters;
// Create with minimal parameters
$sandbox = $client->createSandbox(new SandboxCreateParameters());
// Create with custom settings
$sandbox = $client->createSandbox(new SandboxCreateParameters(
language: 'php',
snapshot: 'laravel-php84',
envVars: ['APP_ENV' => 'development'],
memory: 4,
disk: 10,
cpu: 2,
autoStopInterval: 30,
));
// The sandbox is automatically started and ready to use
echo $sandbox->getId(); // Sandbox ID
echo $sandbox->getState(); // 'started'
echo $sandbox->getRunnerDomain(); // Access URL
// Access sandbox data
$data = $sandbox->getData(); // Returns SandboxResponse DTO
$array = $sandbox->toArray(); // Returns array representation
// Get a Sandbox object by ID
$sandbox = $client->getSandboxById($sandboxId);
// Access sandbox properties
echo $sandbox->getState(); // e.g., "started", "stopped"
echo $sandbox->getCreatedAt();
echo $sandbox->getSnapshot();
echo $sandbox->getCpu();
echo $sandbox->getMemory();
// Refresh data from API
$sandbox->refresh();
// Get raw SandboxResponse DTO if needed
$response = $client->getSandbox($sandboxId);
// Using the Sandbox object (recommended)
$sandbox->start();
$sandbox->stop();
$sandbox->delete();
// Wait for state transitions
$sandbox->waitUntilStarted(timeout: 60); // Wait up to 60 seconds
$sandbox->waitUntilStopped(timeout: 30);
// Or using the client directly
$client->startSandbox($sandboxId);
$client->stopSandbox($sandboxId);
$client->deleteSandbox($sandboxId);
use Daytona;
use ElliottLawson\Daytona\DTOs\SandboxCreateParameters;
// Create a sandbox
$sandbox = Daytona::createSandbox(new SandboxCreateParameters(
language: 'php',
snapshot: 'laravel-php84',
envVars: ['APP_ENV' => 'testing'],
));
// Clone and setup a Laravel project
$sandbox->gitClone('https://github.com/laravel/laravel.git')
->exec('composer install')
->exec('cp .env.example .env')
->exec('php artisan key:generate');
// Run tests
$result = $sandbox->exec('php artisan test');
echo $result->output;
// Clean up
$sandbox->delete();
use ElliottLawson\Daytona\DaytonaClient;
use ElliottLawson\Daytona\DTOs\SandboxCreateParameters;
class DeploymentService
{
public function __construct(
private DaytonaClient $daytona
) {}
public function testDeployment(string $commitHash): bool
{
$sandbox = $this->daytona->createSandbox(new SandboxCreateParameters(
language: 'php',
snapshot: 'production-like',
));
try {
$sandbox->gitClone('https://github.com/mycompany/app.git')
->exec("git checkout {$commitHash}")
->exec('composer install --no-dev')
->exec('npm install && npm run build');
$result = $sandbox->exec('./vendor/bin/phpunit');
return $result->isSuccessful();
} finally {
$sandbox->delete();
}
}
}
// Get all sandbox data
$data = $sandbox->getData(); // Returns SandboxResponse DTO
$array = $sandbox->toArray(); // Returns array
// Access specific properties
echo $sandbox->getState(); // 'started', 'stopped', etc.
echo $sandbox->getRunnerDomain(); // Sandbox URL
echo $sandbox->getCpu(); // CPU cores
echo $sandbox->getMemory(); // Memory in GB
echo $sandbox->getDisk(); // Disk in GB
echo $sandbox->getCreatedAt(); // Creation timestamp
// Check sandbox state
if ($sandbox->getState() === 'started') {
// Sandbox is ready
}
// Refresh data from API
$sandbox->refresh();
// Create sandbox without waiting
$sandbox = $client->createSandbox(
new SandboxCreateParameters(snapshot: 'php-8.3'),
waitForStart: false
);
// Manually wait for it to start
$sandbox->waitUntilStarted(timeout: 120); // Wait up to 2 minutes
// Stop and wait
$sandbox->stop()->waitUntilStopped();