Здравствуйте!
Уважаемые товарищи, пожалуйста, подскажите.
Правильное решение обмениваться данными между функциями через файлы? То есть в одной функции я получаю выборку данных, сохраняю в массив, сохраняю в файл. В другой функции считываю файл, получаю массив и дальше его обрабатываю.
Я так делаю, потому что функции разложены по разным файлам и не удалось между ними наладить обмен переменных.
Я пытался в обоих файлах работать с данными через массив $GLOBALS, потом объявлял переменные через global, но только обмен через файл заработал.
Спасибо.
С уважением, Юрий.
Комментарии
Как-то бредово звучит, если честно. Вообще непонятно, для чего подобное может быть нужно - может вы подробнее проясните, что вы этим добиваетесь и чего не можете стандартными средствами?
Почему из первой функции нельзя вызвать вторую и передать ей данные - тем более непонятно.
Схема вызова такова, что в файле 1 реализован модуль с FAPI и в поле вызывается файл 2, выполняющий обработку данных. Обработанные данные затем не хотят показываться в файле 1 чтобы я ни делал из описанного. И только сохранение во временный файл помогает.
Есть же include, require и т.д.
Если файлы грузятся хаотично, или просто в различное время - можно записывать необходимые данные в БД, и потом их оттуда выбирать.
А через временный файл будет не правильно?
Временный файл может стереться, при запуске крона.
Кстати, этот вариант тоже хорошо, так как не надо думать про права на директорию для записи веб-сервером. Спасибо!
Я так понимаю, вопрос больше для форума 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
Обмен файлами это для больших объемов. 10-100 мегабайт и более