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


Cakephp variable problem - using globals?

我正在尝试用cakephp运行一个irc机器人。我的问题是引用连接,我可以通过函数传递它,但是当我编写数十个都需要相同变量的函数时,这似乎是一个愚蠢的解决方案。我这样做的方式是通过全局变量$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 中持续存在?

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

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

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

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

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