我正在尝试使用cakephp运行irc bot。我的问题是引用连接,我可以通过函数传递它,但是当我编写所有需要相同变量的几十个函数时,这似乎是一个愚蠢的解决方案。我这样做的方式是通过全局变量$ socket。似乎cakephp不支持全局变量,至少不支持传统意义。
有什么想法吗?
以下是代码:
$socket = fsockopen($config['server'], $config['port']);
我将继续调用的主要功能是send_data(),它与服务器通信。
function send_data($cmd, $msg = null, $socket = null)
{
if($msg == null)
{
fwrite($socket, $cmd."\r\n");
echo '<strong>'.$cmd.'</strong><br />';
ob_flush();
} else {
fwrite($socket, $cmd.' '.$msg."\r\n");
echo '<strong>'.$cmd.' '.$msg.'</strong><br />';
ob_flush();
}
}
所以基本上每次我都要调用send_data函数,我做了很多次,我必须引用$ socket。有没有办法让它在cakephp中持续存在?
答案 0 :(得分:2)
CakePHP方式是将套接字添加到模型中,以便您可以使用$this->ModelName->socket
引用它。在这种情况下,您可以将send_data()函数放入同一个模型中,并在其中使用$this->socket
。
如果在多个模型中需要这样,您可以将其添加到app_model.php
,以便它适用于每个模型或使组件在控制器中使用。
答案 1 :(得分:0)
我部分同意Juhana的观点,你应该通过模型而不是作为组件来隔离代码。如果您要遵循真正的MVC模式,您可以将其粘贴在模型中,但行为可能是最佳实践。
我建议调查行为,看看它是否适用于您的数据模型。