global
переменные и $GLOBALS
могут привести к большому количеству проблем, и, кроме того, их чрезвычайно сложно отладить. Они имеют свое применение, но как только вы начинаете подходить к каждой проблеме таким образом, вещи могут выйти из-под контроля и их будет сложно обслуживать.
У меня вопрос, как лучше всего сделать идентификатор и текст плиток?
доступны через несколько вызовов функций без необходимости проверять и
назначить массив в каждой функции?
Хотя я не на 100% уверен в том, с чем вы работаете, а также, являются ли данные карты статичными или нет, или если у пользователей может быть несколько карт или карт обновления, эти советы могут помочь:
Если данные никогда не меняются, используйте класс Config в ваших интересах. Сохраните его в файле конфигурации, загрузите его и прочитайте элементы с помощью config_item()
или $this->config->item()
.
Если есть нечто большее, чем просто статические данные, подумайте о создании класса / библиотеки для обработки всего, что связано с «доской бинго». Очень простой пример:
class Bingo_Board {
private $card;
function get_card($id)
{
// Assign the values to the $card property if not set yet,
// getting the values from the database, a file, or wherever they are
// Randomize them, do whatever you want
if (empty($this->card))
{
$this->card = array(/* your data here*/);
}
// Return the card
return $this->card;
}
}
Тогда вы можете получить доступ к карте следующим образом:
$this->bingo_board->get_card();
Значения будут установлены на время запроса, и вы можете расширить это, добавив такие функции, как reset_card()
, validate_card()
, update_card()
и так далее. Если вам нужно хранить много карточек, просто используйте массив для свойства $card
и установите / получите элементы по индексу массива.
Однако, если вам нужно, чтобы данные сохранялись в разных запросах и данные не были статичными (например, они обновляются после каждого запроса), вам придется использовать данные сеанса или сохранять их в базе данных, чтобы получить его в следующем запросе / странице. Просто храните как можно меньше данных, например, идентификатор карты.
Codeigniter (и PHP в этом отношении) предоставляют несколько способов решения проблемы. В конце концов - используйте тот метод, который вам больше подходит. Глобальные переменные могут быть удобным и ленивым способом получения / установки произвольных данных, но если вы можете избежать их использования - вам следует.