2013-05-14 13 views
0

Я нашел это немного трудно объяснить, поэтому, если есть какая-то неясная часть, пожалуйста, дайте мне знать.Использование переменных между несколькими файлами

Я делаю однопользовательскую веб-RPG.

У меня есть несколько файлов:

characters.php: это один содержит character класса, вместе со своими методами (levelUp(), например)

create1.php: это страница, на которой пользователь выбирает атрибуты персонажа , а затем создается символ. она включает в себя эту часть:

require 'characters.php'; 
    $player = new Character($race); 
    $player->levelUp(); 

Что происходит здесь: пользователь берется create1.php и входит в их род, и с входом пользователя новый character создается.

Теперь у нас есть переменная $player, которая содержит всю информацию о символе и хранится в файле create1.php.

Что я намерен делать requirecharacters.php на каждой странице веб-игры. Это означает, что мне нужно импортировать $player в characters.php. Другими словами, мне нужно переместить $player на страницу, которая будет присутствовать на ВСЕХ страницах игры, потому что в ней содержатся персональные данные пользователя.

Как я могу добиться этого без создания нового экземпляра character в characters.php, но в create1.php?

+4

Ответ: с помощью базы данных и выборки на спрос. –

ответ

1

Вы можете использовать базу данных (как предполагает STT LCU в комментарии) или $_SESSION с ленивым INIT

в characters.php

session_start(); 
function getCharacter() { 
    if(!isset($_SESSION["player"])) $_SESSION["player"] = new Character(...); 
    return $_SESSION["player"]; 
} 

в другие файлы

require 'characters.php'; 
$player = getCharacter(); // create instance or get existing one if exists 
+0

База данных должна быть тогда, но я рад, что вы также показали другой путь. – frrlod

+0

@frrlod это то же самое, только вместо 'new Character();' выполняет запросы БД для построения данных. Или еще лучше: поместите запросы БД в класс символов - это называется моделью. –

2

STT LCU находится прямо на этом. Каноническое решение того, что вы пытаетесь сделать, - это использовать базу данных. Посмотрите на запуск стека AMP на вашем компьютере и используйте базу данных SQL для хранения ваших данных. Извлеките данные из базы данных на каждую страницу по мере необходимости с запросами SELECT.

В качестве альтернативы, если только один пользователь и один символ будут получать доступ к нему за один раз, вы можете сохранить данные символа в текстовый файл и открыть и прочитать текстовый файл обратно в объект character в каждом из ваших файлов PHP , Это может быть меньше кривой обучения для того, что вы пытаетесь сделать.

редактировать PHP сессии может быть использован, но истекает (с данными внутри него), когда браузер закрывается или после того, как время по умолчанию 24 минут (я считаю.)

Смежные вопросы