Cakephp变量问题 - 使用全局变量?

时间:2011-05-15 05:34:17

标签: php cakephp global-variables

我正在尝试使用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中持续存在?

2 个答案:

答案 0 :(得分:2)

CakePHP方式是将套接字添加到模型中,以便您可以使用$this->ModelName->socket引用它。在这种情况下,您可以将send_data()函数放入同一个模型中,并在其中使用$this->socket

如果在多个模型中需要这样,您可以将其添加到app_model.php,以便它适用于每个模型或使组件在控制器中使用。

答案 1 :(得分:0)

我部分同意Juhana的观点,你应该通过模型而不是作为组件来隔离代码。如果您要遵循真正的MVC模式,您可以将其粘贴在模型中,但行为可能是最佳实践。

我建议调查行为,看看它是否适用于您的数据模型。

http://book.cakephp.org/view/1071/Behaviors