Php 调用函数时出错

Php 调用函数时出错,php,bots,Php,Bots,我一直在寻找答案,但最终还是被难住了。我一直在编写代码,允许多个机器人连接到一个聊天室。我写了所有的主代码并检查了一遍,以确保一切正常。然后,当我调用使其工作所需的函数时,它给了我一个错误,说: 注意:未定义的变量:第40行C:\wamp\www\BotRaid.php中的ip 还有一个错误是: 致命错误:无法访问C:\wamp\www\BotRaid.php中的空属性 在线40 (这里还有一个截图:) 您正在错误地访问类的属性 该行: $this->connect($this->$

我一直在寻找答案,但最终还是被难住了。我一直在编写代码,允许多个机器人连接到一个聊天室。我写了所有的主代码并检查了一遍,以确保一切正常。然后,当我调用使其工作所需的函数时,它给了我一个错误,说:

注意:未定义的变量:第40行C:\wamp\www\BotRaid.php中的ip

还有一个错误是:

致命错误:无法访问C:\wamp\www\BotRaid.php中的空属性 在线40

(这里还有一个截图:)


您正在错误地访问类的属性

该行:

$this->connect($this->$ip,$this->$port);
应该是:

$this->connect($this->ip, $this->port);
由于没有名为
$ip
的局部变量,因此在尝试访问属性时,表达式的计算结果为
$this->
,因为PHP允许您使用变量访问属性和函数

例如,这将起作用:

$ip = 'ip';
$theIp = $this->$ip; // evaluates to $this->ip

// or a function call
$method = 'someFunction';
$value  = $this->$method(); // evaluates to $this->someFunction();
您必须使用
$this->foo
更改所有出现的
$this->foo
,因为您在整个类中使用了该符号


如@Aatch评论中所述,请参阅上的文档以了解更多解释。但这正是您偶然遇到的情况。

PHP的另一个难题,变量!啊,谢谢你。我已经改变了所有需要改变的事情。然而,我仍然有一个错误。如此处所述:。第49行是“$soc=socket\u create(AF\u INET,SOCK\u STREAM,SOL\u TCP);”如果($this->$soc!=null)socket\u close($this->$soc);”,是否只是
soc!=null)socket\u close($this->soc),代码>仍然没有更改为
?第49行不应该导致未定义的变量$soc,因为您正在分配给它;您正在运行的PHP版本是在没有套接字支持的情况下编译的,因此PHP版本中不存在函数
socket\u create
,您将无法使用它。我浪费了好几个小时的生命。哦,是这样的。我真的很感谢你的帮助。我会看看是否能找到一个支持套接字的人至少帮我测试一下。
$ip = 'ip';
$theIp = $this->$ip; // evaluates to $this->ip

// or a function call
$method = 'someFunction';
$value  = $this->$method(); // evaluates to $this->someFunction();