【发布时间】:2014-09-30 21:33:39
【问题描述】:
我在 Ubuntu 14.04 上使用带有 PHP 5.5 的 PECL D-Bus extension 与 Clementine 交互。
至于现在我可以连接到会话总线(发生任何错误时都会引发异常),但是当我初始化代理对象时,我得到一个空的DbusObject,所以我无法调用 D -总线方法。
这是我使用的代码(灵感来自extension usage examples):
$dbus = new Dbus(Dbus::BUS_SESSION);
$clementine_player_proxy = $dbus->createProxy('org.mpris.clementine', '/Player', 'org.freedesktop.MediaPlayer');
var_dump($clementine_player_proxy); // returns "object(DbusObject)#3 (0) {}"
当然我检查了d-feet 是否存在总线名称、对象路径和接口:
我被困了两天。
在 PHP 错误报告中编辑:submitted bug。
编辑 2:使用另一种方法 (Addtrack(string, bool)) 和另一个对象路径 (/TrackList) 进行测试。有用。我不明白。
【问题讨论】:
-
您是否尝试过调用这些方法?很久以前我在 var_dumping DOMDocument 的东西,它并没有打印太多,但那里的数据和方法。
-
是的,测试脚本:pastebin.com/v3gqSwW8
-
你是对的,用另一种方法(Addtrack(string, bool))和另一种对象路径(/TrackList)测试,它工作正常,DbusObject为空。
-
我查看了 Pecl Dbus 源文件和头文件,据我了解,它只是将任何“方法调用”直接中继到某些 C dBus 库。我想这就是为什么 var_dump 是空的(因为实际上 in 没有任何方法(除了构造和 1 或 2 个特定于 php 的其他方法))