Обмен данными через файлы

Главные вкладки

Аватар пользователя Litos Litos 1 сентября 2016 в 12:18

Здравствуйте!
Уважаемые товарищи, пожалуйста, подскажите.
Правильное решение обмениваться данными между функциями через файлы? То есть в одной функции я получаю выборку данных, сохраняю в массив, сохраняю в файл. В другой функции считываю файл, получаю массив и дальше его обрабатываю.
Я так делаю, потому что функции разложены по разным файлам и не удалось между ними наладить обмен переменных.
Я пытался в обоих файлах работать с данными через массив $GLOBALS, потом объявлял переменные через global, но только обмен через файл заработал.

Спасибо.
С уважением, Юрий.

Лучший ответ

Аватар пользователя bumble bumble 1 сентября 2016 в 14:11
1

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

Комментарии

Аватар пользователя xakd xakd 1 сентября 2016 в 12:29
1

Как-то бредово звучит, если честно. Вообще непонятно, для чего подобное может быть нужно - может вы подробнее проясните, что вы этим добиваетесь и чего не можете стандартными средствами?

Почему из первой функции нельзя вызвать вторую и передать ей данные - тем более непонятно.

Аватар пользователя Litos Litos 1 сентября 2016 в 15:12

Схема вызова такова, что в файле 1 реализован модуль с FAPI и в поле вызывается файл 2, выполняющий обработку данных. Обработанные данные затем не хотят показываться в файле 1 чтобы я ни делал из описанного. И только сохранение во временный файл помогает.

Аватар пользователя sergeybelya sergeybelya 1 сентября 2016 в 12:53
1

Litos wrote:

Я так делаю, потому что функции разложены по разным файлам и не удалось между ними наладить обмен переменных

Есть же include, require и т.д.

Аватар пользователя bumble bumble 1 сентября 2016 в 14:11
1

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

Аватар пользователя Litos Litos 1 сентября 2016 в 15:35

Кстати, этот вариант тоже хорошо, так как не надо думать про права на директорию для записи веб-сервером. Спасибо!

Аватар пользователя mbaev mbaev 1 сентября 2016 в 14:32
1

Я так понимаю, вопрос больше для форума php.ru. Но тем не менее, например, у Вас есть два хука и некорректным будет вызывать хук из другого как функцию. Например,

<?php
function example_boot() {
  
$items[] = 1;
  
$items[] = 2;
  
$items[] = 3;
  return 
$items;
}

function 

example_init() {
  
$items example_boot();
}
?>

Тогда, возможно, вам поможет следующий вариант:

<?php
function example_boot() {
  
$items = &drupal_static('example_boot', array());
  
$items[] = 1;
  
$items[] = 2;
  
$items[] = 3;
}

function 

example_init() {
  
$items = &drupal_static('example_boot', array());
}
?>

Остаётся проследить чтобы порядок выполнения хуков совпадал с предполагаемым.

P.S.
Функция drupal_static - это фишка друпала, но, при необходимости, вы можете реализовать такую же - drupal_static