初始化成功后代理为空
Posted
技术标签:
【中文标题】初始化成功后代理为空【英文标题】:Proxy is empty after initializing successfully 【发布时间】: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 的其他方法)) 【参考方案1】:我最终通过dbus module(如Clementine's wiki 中所述)轻松学习了 Python 以正确使用 D-Bus。
我建议所有想要使用 PHP D-Bus 扩展的人不要这样做:它有缺陷、棘手并且没有文档(示例脚本除外)。
【讨论】:
以上是关于初始化成功后代理为空的主要内容,如果未能解决你的问题,请参考以下文章