PHP ប្រភពបើកចំហ
Registrar API
បណ្ណាល័យ PHP តែមួយសម្រាប់គ្រប់គ្រងដូមេននៅលើ NameSilo, GoDaddy, Namecheap និង Dynadot — បូក adapter Cloudflare សម្រាប់ zone, DNS និង cache។ ការពិនិត្យភាពអាចប្រើបាន ការចុះឈ្មោះ ការបន្តសុពលភាព ការផ្ទេរ កំណត់ត្រា DNS និង nameserver ទាំងអស់តាមរយៈ interface ដែលមានស្ថិរភាពតែមួយ។
composer require josuamarcelc/registrar-api
Adapter
អ្នកចុះឈ្មោះដែលគាំទ្រ
ជ្រើសរើស adapter តាមឈ្មោះម៉ាក។ adapter ទាំងអស់ចែករំលែក method signature ដូចគ្នា ដូច្នេះអ្នកអាចប្តូរអ្នកចុះឈ្មោះដោយមិនចាំបាច់សរសេរកូដឡើងវិញ។
ការបង្ហាញផ្ទាល់
ពិនិត្យភាពអាចប្រើបានរបស់ដូមេន
ដំណើរការការហៅ checkAvailability() ពិតប្រាកដតាមរយៈ adapter NameSilo នៅផ្នែកម៉ាស៊ីនមេ។ បញ្ចូលដូមេនរហូតដល់ ១០ បំបែកដោយសញ្ញាក្បៀស ដកឃ្លា ឬបន្ទាត់ថ្មី។ កំណត់ត្រឹម ១០ ដងក្នុង ៥ នាទី។
ចាប់ផ្តើមរហ័ស
បីបន្ទាត់ដល់ការហៅដែលដំណើរការ
<?php
require __DIR__ . '/vendor/autoload.php';
use RegistrarAPI\RegistrarAPI;
$api = RegistrarAPI::make('namesilo', [
'api_key' => 'YOUR_NAMESILO_API_KEY'
]);
$result = $api->checkAvailability(['example.com', 'mybrand.io']);
print_r($result);
ព័ត៌មានសម្គាល់
ការកំណត់រចនាសម្ព័ន្ធតាម adapter
adapter នីមួយៗទទួលយក config array មួយ។ ខាងក្រោមនេះជាតម្រូវការអប្បបរមាដែលអ្នកតែងតែត្រូវការ។
NameSilo
RegistrarAPI::make('namesilo', [
'api_key' => 'YOUR_KEY',
]); GoDaddy
RegistrarAPI::make('godaddy', [
'api_key' => 'KEY',
'api_secret' => 'SECRET',
// optional: 'base' => 'https://api.godaddy.com/v1'
]); Namecheap
RegistrarAPI::make('namecheap', [
'api_user' => 'USERNAME',
'api_key' => 'KEY',
'client_ip' => 'SERVER_PUBLIC_IP',
// optional: 'base' => 'https://api.namecheap.com/xml.response'
]); Dynadot
RegistrarAPI::make('dynadot', [
'api_key' => 'KEY',
]); Method
ប្រតិបត្តិការទូទៅ
adapter គ្រប់ៗអនុវត្ត method signature ដូចគ្នា។ តម្លៃត្រឡប់គឺ associative array ដែលបានធ្វើឱ្យមានស្តង់ដារ។
// Availability
$api->checkAvailability(['example.com']);
// Lifecycle
$api->registerDomain('example.com', [
'years' => 1,
'privacy' => true,
'auto_renew' => true,
'registrant' => [ /* contact fields */ ],
]);
$api->renewDomain('example.com', 1);
$api->transferDomain('example.com', ['auth_code' => 'EPP']);
$api->getDomain('example.com');
// DNS records
$api->getDNS('example.com');
$api->setDNS('example.com', [
['type'=>'A', 'host'=>'@', 'value'=>'203.0.113.10', 'ttl'=>600],
['type'=>'CNAME','host'=>'www', 'value'=>'@', 'ttl'=>600],
]);
$api->addDNS('example.com', ['type'=>'TXT','host'=>'@','value'=>'v=spf1 -all','ttl'=>300]);
$api->delDNS('example.com', ['type'=>'TXT','host'=>'@']);
// Nameservers
$api->setNameServers('example.com', ['ns1.host.com','ns2.host.com']);
// Escape hatch — call any raw endpoint the adapter doesn't wrap
$api->raw('domains/suggestions?query=mybrand&limit=5');
រូបរាងចម្លើយតប
អ្វីដែលអ្នកនឹងទទួលបាន
bool — ការពិនិត្យភាពជោគជ័យរហ័សcheckAvailability(){type,host,value,ttl,prio?} ដែលត្រឡប់ដោយ getDNS()ប្រូម៉ូសិន
adapter Cloudflare
បណ្ណាល័យដូចគ្នា រូបរាងដូចគ្នា ប៉ុន្តែសម្រាប់ zone, កំណត់ត្រា DNS, ការសម្អាត cache និង toggle ឥតគិតថ្លៃ (Always HTTPS, Auto HTTPS Rewrites, Brotli, Minify, Rocket Loader, Dev Mode)។
$cf = RegistrarAPI::make('cloudflare', ['api_token' => 'CF_TOKEN']);
$cf->createZone('example.com');
$cf->setDNS('example.com', [
['type'=>'A','host'=>'@','value'=>'198.51.100.10','ttl'=>300,'proxied'=>true],
]);
$cf->purgeEverything('example.com'); រួមចំណែក
បន្ថែមអ្នកចុះឈ្មោះថ្មីក្នុងឯកសារតែមួយ
បង្កើត class មួយក្នុង src/adapters/ ដែលពង្រីក BaseAdapter ហើយអនុវត្ត method អរូបី។ Composer នឹងទាញវាដោយស្វ័យប្រវត្តិ។
namespace RegistrarAPI\Adapters;
use RegistrarAPI\Core\BaseAdapter;
class MyRegistrar extends BaseAdapter {
protected string $brand = 'myregistrar';
public function checkAvailability(array $domains): array { /* ... */ }
public function registerDomain(string $domain, array $opts): array { /* ... */ }
public function renewDomain(string $domain, int $years=1, array $opts=[]): array { /* ... */ }
public function transferDomain(string $domain, array $opts): array { /* ... */ }
public function getDomain(string $domain): array { /* ... */ }
public function getDNS(string $domain): array { /* ... */ }
public function setDNS(string $domain, array $records): array { /* ... */ }
public function addDNS(string $domain, array $record): array { /* ... */ }
public function delDNS(string $domain, array $selector): array { /* ... */ }
public function setNameServers(string $domain, array $nameservers): array { /* ... */ }
public function raw(string $op, array $params=[]): array { /* ... */ }
}