【问题标题】:Global variables nullified after function call函数调用后全局变量无效
【发布时间】:2011-07-04 10:33:39
【问题描述】:

我在 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.phpCallerService.php

【问题讨论】:

  • reviewOrder.php 的内容是什么?无论如何,您可以使用会话类而不是全局变量
  • 嗨 Damien,我已经更新了我的帖子,其中包含指向示例代码的链接。这是 ReviewOrder.php github.com/GeorgeOld/Paypal-NVP-PHP-code-examples/blob/master/… 的链接我没有在我的应用程序中对这个文件进行任何重大更改。

标签: php codeigniter paypal


【解决方案1】:

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

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

【讨论】:

  • 感谢您的反馈,我查看了 CI PayPal NVP 库,但遗憾的是文档非常有限。我可以按照您的建议进行操作,并将代码示例调整为 OOP。
猜你喜欢
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多