本文目录导读:

在 PHP 中,ADR 通常有两种完全不同的含义,取决于你的上下文,我帮你分别梳理一下:
DNS 记录操作(最常见)
如果你指的是在 PHP 中查询或操作 DNS 的 A/AAAA 记录(即域名解析记录),PHP 提供了内置函数来处理。
查询 A 记录(最常用)
<?php $domain = 'google.com'; // 方法1:使用 dns_get_record(推荐,返回详细数组) $records = dns_get_record($domain, DNS_A); echo '<pre>'; print_r($records); // 输出类似: // Array // ( // [0] => Array // ( // [host] => google.com // [class] => IN // [ttl] => 299 // [type] => A // [ip] => 142.250.72.14 // ) // ) echo '</pre>'; // 方法2:使用 gethostbyname(简单,只返回一个IP字符串) $ip = gethostbyname($domain); echo "IP 地址: " . $ip; // 输出: IP 地址: 142.250.72.14 ?>
查询 AAAA 记录(IPv6)
<?php
// 查询 IPv6 记录
$records = dns_get_record('google.com', DNS_AAAA);
print_r($records);
// 输出包含 type => AAAA 和 ipv6 字段
?>
检查域名是否存在(返回布尔值)
<?php
if (checkdnsrr('google.com', 'A')) {
echo '该域名存在 A 记录';
} else {
echo '该域名没有 A 记录';
}
?>
架构模式(Active Record / 领域模型)
如果你指的是 Active Record 模式(一种数据库设计模式,其中数据表的一行对应一个对象),PHP 常见的实现方式如下:
使用 Laravel 的 Eloquent ORM(最流行)
<?php
// 1. 定义模型 (继承 Eloquent)
class User extends Model
{
// 自动映射到 users 表
protected $fillable = ['name', 'email'];
}
// 2. 使用 (这就是典型的 ADR 模式)
$user = new User();
$user->name = 'John';
$user->email = 'john@example.com';
$user->save(); // 保存到数据库
// 查询
$user = User::find(1); // 通过主键获取
echo $user->name;
?>
使用原生 PDO 手动实现(简单示例)
<?php
// 这是一个简化的 Active Record 概念示例
class UserRecord {
private $db;
private $id;
private $data = [];
public function __construct($pdo) {
$this->db = $pdo;
}
public function load($id) {
$stmt = $this->db->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$id]);
$this->data = $stmt->fetch(PDO::FETCH_ASSOC);
$this->id = $id;
return $this;
}
public function save() {
if ($this->id) {
// 更新
$stmt = $this->db->prepare("UPDATE users SET name = ? WHERE id = ?");
$stmt->execute([$this->data['name'], $this->id]);
} else {
// 插入
$stmt = $this->db->prepare("INSERT INTO users (name) VALUES (?)");
$stmt->execute([$this->data['name']]);
}
}
public function __get($name) {
return $this->data[$name] ?? null;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
// 使用
$user = new UserRecord($pdo);
$user->load(1);
echo $user->name; // 读取
$user->name = 'New Name';
$user->save(); // 更新
?>
如何选择?
- 如果是要做域名解析工具(比如检查网站是否在线),用 场景一 的
dns_get_record()。 - 如果是要写业务系统(比如用户管理),用 场景二 结合框架(Laravel/ThinkPHP)的 ORM 更高效。
如果你说的 ADR 是其他特定含义(比如某个特定库或协议),请补充说明一下具体场景,我再针对性解答。