PHP code example of phpdevkits / forge-sdk
1. Go to this page and download the library: Download phpdevkits/forge-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/ */
phpdevkits / forge-sdk example snippets
use PhpDevKits\ForgeSdk\Forge;
// 1. Explicit
$forge = new Forge(token: 'your-forge-api-token', organization: 'acme');
// 2. From environment (FORGE_TOKEN, optional FORGE_ORGANIZATION)
$forge = Forge::fromEnvironment();
// 3. From a JSON config file — ./forge.json, or $FORGE_CONFIG_PATH, or an explicit path
$forge = Forge::fromConfig();
$user = $forge->me(); // User DTO
foreach ($forge->organizations()->iterate() as $organization) {
echo $organization->slug.PHP_EOL;
}
$providers = $forge->providers()->all(); // Page<Provider>
$regions = $forge->provider('digitalocean')->regions()->all();
$servers = $forge->org('another-org')->servers()->all(); // doesn't mutate $forge
use PhpDevKits\ForgeSdk\Data\CreateServerData;
use PhpDevKits\ForgeSdk\Data\HetznerServerConfig;
use PhpDevKits\ForgeSdk\Enums\{PhpVersion, ServerType, UbuntuVersion};
$server = $forge->servers()->create(new CreateServerData(
name: 'web-1',
provider: 'hetzner',
type: ServerType::App,
ubuntuVersion: UbuntuVersion::Ubuntu2404,
phpVersion: PhpVersion::Php84,
hetzner: new HetznerServerConfig(regionId: 'fsn1', sizeId: 'cax11', networkId: 12345),
));
$forge->server($server->id)->reboot();
$forge->server($server->id)->delete();
use PhpDevKits\ForgeSdk\Data\{CreateSiteData, UpdateDeploymentScriptData};
use PhpDevKits\ForgeSdk\Enums\SiteType;
$site = $forge->server($serverId)->sites()->create(new CreateSiteData(
type: SiteType::Laravel,
name: 'app',
domainMode: 'on-forge',
));
$forge->server($serverId)->site($site->id)
->deploymentScript()->update(new UpdateDeploymentScriptData(content: $script));
$deployment = $forge->server($serverId)->site($site->id)->deploy(); // Deployment DTO
use PhpDevKits\ForgeSdk\Data\{CreateSshKeyData, CreateDaemonData};
use PhpDevKits\ForgeSdk\Enums\DaemonUser;
$forge->server($serverId)->sshKeys()->create(new CreateSshKeyData(name: 'laptop', key: $publicKey));
$forge->server($serverId)->daemons()->create(new CreateDaemonData(
name: 'queue-worker',
command: 'php artisan queue:work',
user: DaemonUser::Forge,
));
$forge->server($serverId)->daemon($daemonId)->restart();
$page = $forge->servers()->all(new ListServersOptions(size: 25, provider: 'hetzner'));
if ($page->hasMore()) {
$next = $forge->servers()->all(new ListServersOptions(cursor: $page->nextCursor));
}
foreach ($forge->servers()->iterate() as $server) {
// walks every page automatically
}
use PhpDevKits\ForgeSdk\Forge;
use PhpDevKits\ForgeSdk\Requests\Me\GetMe;
use Saloon\Http\Faking\{MockClient, MockResponse};
$mock = new MockClient([
GetMe::class => MockResponse::make([
'data' => [
'id' => '1',
'type' => 'users',
'attributes' => ['name' => 'Test User', 'email' => '[email protected] '],
'links' => ['self' => ['href' => 'https://forge.laravel.com/api/user']],
],
]),
]);
$forge = new Forge('test-token')->withMockClient($mock);