初始化成功后代理为空

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 扩展的人不要这样做:它有缺陷、棘手并且没有文档(示例脚本除外)。

【讨论】:

以上是关于初始化成功后代理为空的主要内容,如果未能解决你的问题,请参考以下文章

vue中判断canvas画布是不是为空

mysql学习

接口引用即使在初始化后仍为空,使我无法在 Internet 连接更改时显示小吃栏

C/C++——指针

修改mysql初始密码

基于LinkSDK的网关示例