Глобальные переменные обнуляются после вызова функции - PullRequest
0 голосов
/ 04 июля 2011

Я создал приложение в codeigniter, которое требует интеграции PayPal Checkout.

Я добавил пример кода 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');
    }

}

Однако, когда я отправляю форму, я получаю много предупреждений / уведомлений и записываю это в hash_call() в CallerService.php, в частности, все глобальные переменные обнуляются внутри этой функции.

У меня есть var_dump-ed переменные над функцией, и правильные значения выводятся на экран.

Я также протестировал пример кода PayPal Nvp за пределами codeigniter, и все это работает так, как задумано, поэтому моя среда разработки в порядке.

Я смотрел на многих форумах и т. Д., Что глобальные переменные обнуляются, нокажется, ни один из них не соответствует моей точной проблеме.

Чтобы просмотреть примеры кода PayPal NvP PHP - перейдите сюда https://github.com/GeorgeOld/Paypal-NVP-PHP-code-examples

На данном этапе меня интересует только ReviewOrder.php и CallerService.php

1 Ответ

0 голосов
/ 04 июля 2011

Хорошо, я взглянул на код, и мне на ум приходят 2 решения:

  1. Вы можете либо изменить глобальные переменные на индексы $ _SESSION (нативные php или элементы сеанса CI), либо, что лучшеТем не менее, создайте Cunstom библиотеку, которая оборачивает все необходимое из этих файлов, делая необходимую адаптацию, чтобы работать без проблем в среде CI.Я выберу второй вариант, даже если он потребует некоторой работы, чтобы правильно перенести их в структуру ООП.Для получения некоторых рекомендаций обратитесь к руководству по созданию библиотек ;это довольно просто и делает ваш код более легким в обслуживании и следовании.
  2. Вы можете отказаться от текущего решения и искать альтернативы среди кодов, уже адаптированных к Codeigniter.Несколько гуляк привели меня к этому ресурсу: Библиотека CI PayPal NVP , которая выглядит красиво и чисто (но не проанализировала ее);даже если кажется, что он предназначен для CI 1.7, для его использования в последней версии может не потребоваться много настроек.Вы можете попробовать его или найти на форуме CI другие библиотеки того же типа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...