函数调用后全局变量无效

时间:2011-07-04 10:33:40

标签: php codeigniter paypal

我在codeigniter中构建了一个需要paypal结帐集成的应用程序。

我已将paypal nvp示例代码添加到codeigniter应用程序中,文件已放在/ third-party /文件夹中。

在我的控制器中,我有一个处理表单提交的方法。在这个阶段,我需要ReviewOrder.php,它遵循示例代码示例。

public function paymentOption()
{
    if( $this->input->post() )
    {
        require_once($_SERVER['DOCUMENT_ROOT'].'/../application/third_party/paypal/reviewOrder.php');
    }

}

但是,当我提交表单时,我会收到很多警告/通知,并且我已将其减少到CallerService.php中的hash_call()函数,特别是全局变量在此函数中都被取消。

我对函数上方的变量进行了var_dump-ed,并将正确的值输出到屏幕上。

我还测试了codeigniter之外的paypal nvp示例代码,这一切都按预期工作,所以我的开发环境很好。

我在许多论坛等中查看了全局变量无效,但似乎没有一个与我的确切问题相符。

要查看paypal nvp php代码示例 - 请转到此处https://github.com/GeorgeOld/Paypal-NVP-PHP-code-examples

在此阶段,我只关注 ReviewOrder.php CallerService.php

1 个答案:

答案 0 :(得分:0)

好的,我看了一下代码,我想到了两个解决方案:

  1. 您可以将全局变量更改为$ _SESSION索引(php native或CI的会话元素),或者更好的是,构建一个cunstom库,从这些文件中包装您需要的所有内容,进行必要的调整以便在没有问题的情况下工作CI环境。我会选择第二种选择,即使它需要一些工作才能在OOP结构中正确移植它们。有关指导,请查看creating libraries上的手册;它非常简单,使您的代码更容易保持和遵循。
  2. 您可以放弃当前的解决方案,并在已经适应Codeigniter的代码中搜索替代方案。几个gooleing引导我到这个资源:CI PayPal NVP Library,看起来很干净(但没有分析它);即使看起来似乎是CI 1.7,它可能不需要太多调整才能在最新版本中使用它。 您可以试一试或搜索其他同类图书馆的CI论坛。