小编fox*_*x91的帖子

如何从特定的PDO驱动程序对象获取所有方法的完整列表?

我试图获取每个PDO驱动程序的所有方法(我的Windows PC上都安装了所有方法)。

但是,例如,如果我尝试使用Postgres(pdo_pgsql):

var_export(get_class_methods('PDO'));

结果是:

array (
  0 => '__construct',
  1 => 'prepare',
  2 => 'beginTransaction',
  3 => 'commit',
  4 => 'rollBack',
  5 => 'inTransaction',
  6 => 'setAttribute',
  7 => 'exec',
  8 => 'query',
  9 => 'lastInsertId',
  10 => 'errorCode',
  11 => 'errorInfo',
  12 => 'getAttribute',
  13 => 'quote',
  14 => '__wakeup',
  15 => '__sleep',
  16 => 'getAvailableDrivers',
)
Run Code Online (Sandbox Code Playgroud)

但是此列表不完整,因为PDO Postgres包含以下方法:

$pdo->pgsqlCopyToArray('my_table');

有没有办法获取所有方法,而不仅仅是PDO默认值?

在此先感谢,Celso

编辑

我也尝试过反射,结果像get_class_methods()一样不完整:

var_export(array_column((new ReflectionClass('PDO'))->getMethods(), 'name'));

结果是一样的:

array (
  0 => '__construct',
  1 => 'prepare',
  2 …
Run Code Online (Sandbox Code Playgroud)

php reflection methods pdo

11
推荐指数
1
解决办法
202
查看次数

以无根模式运行 Docker

我正在尝试在 ubuntu VM 中以无根模式运行 docker。

  1. 我正在使用 terraform 脚本配置虚拟机。
  2. 我正在使用 terraform run 模块来执行命令和先决条件。
  3. 但是当我在此运行模块中添加 docker 作为无根模式命令时,即使我切换新用户,这些脚本也不会执行。以下是我需要在 terraform run 模块中以另一个用户身份执行的命令。
sudo apt-get install -y uidmap
curl -fsSL https://get.docker.com/rootless | sh
export DOCKER_HOST=unix:///run/user/1000/docker.sock
systemctl --user status docker
Run Code Online (Sandbox Code Playgroud)
  1. 我收到错误“拒绝以 root 用户身份安装 rootless Docker”
  2. 我的目标是使用 terraform run 模块自动执行此操作。

是否可以帮助解决此问题,或者是否有其他解决方法。

提前致谢。

我尝试过切换用户并执行,但这些命令仍然没有执行。

sudo apt-get install -y uidmap
curl -fsSL https://get.docker.com/rootless | sh
export DOCKER_HOST=unix:///run/user/1000/docker.sock
systemctl --user status docker
Run Code Online (Sandbox Code Playgroud)

我想使用 terraform run 模块或任何其他方式自动执行此操作,但唯一的事情是在配置虚拟机后应该执行此操作。

docker

5
推荐指数
1
解决办法
5471
查看次数

标签 统计

docker ×1

methods ×1

pdo ×1

php ×1

reflection ×1