函数调用后全局变量无效


Global variables nullified after function call

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

我已经将贝宝nvp示例代码添加到了codeigniter应用程序中,这些文件已经放在第三方/文件夹中。

在我的控制器中,我有一个处理表单提交的方法。在这个阶段,我需要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之外的贝宝nvp示例代码,这一切都按预期工作,所以我的开发环境很好。

我在许多论坛等上寻找被取消的全局变量,但似乎没有一个能与我的确切问题相匹配。

查看贝宝nvp php代码示例-点击此处https://github.com/GeorgeOld/Paypal-NVP-PHP-code-examples

在这个阶段,我只关心ReviewOrder.phpCallerService.php

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

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