переместить объект с 1 страницы на другую? - PullRequest
12 голосов
/ 13 октября 2009

Хей, ребята. Я немного новичок в ООП в PHP. Я научился писать и создавать объекты. Есть ли способ взять объект и передать его другому сценарию? или используя GET или POST или SESSION или что-то еще. Если нет способа назначить объекту несколько переменных на одной странице, а затем назначить этому же объекту больше переменных на другой странице?

Спасибо

Ответы [ 5 ]

19 голосов
/ 13 октября 2009

Вы можете сохранить объекты в сеансе, но вам нужно включить файл, который содержит определение класса, перед вызовом session_start () (или использовать автозагрузку класса и настроить его перед началом сеанса). Например:

На каждой странице:

//include class definition
require('class.php');

//start session
session_start();

1-я страница:

$object = new class();
$object->someProperty = 'hello';

//store in session
$_SESSION['object'] = $object;

Последующие страницы:

$object = $_SESSION['object'];

//add something else, which will be stored in the session
$object->anotherPropery = 'Something';
3 голосов
/ 14 февраля 2013

Вот пример с автозагрузкой в ​​отношении ответа Тома Хейя:

Перед началом сеанса:

function __autoload($className) {
    $file = PATH_TO_FOLDER_WITH_ALL_CLASS_FILES."/".$className.'.php';
    if(file_exists($file)) {
        require_once $file;
    }
}

session_start();

Страница прохождения объекта:

$object = new class();
$object->someProperty = 'hello';

//store in session
$_SESSION['object'] = $object;

Страница получения объекта:

$object = $_SESSION['object'];

//add something else, which will be stored in the session
$object->anotherPropery = 'Something';

Метод автозагрузки автоматически загружает объекты при получении данных из сеанса.

2 голосов
/ 13 октября 2009

Вы можете сохранить объект в СЕССИИ. Вы можете сериализовать объект и пройти через GET или POST.

Если вы хотите, чтобы объект сохранялся на сайте, то, вероятно, SESSION - ваш лучший выбор.

1 голос
/ 13 октября 2009

Использование object в нескольких «скриптах»:

Сначала вы должны решить, какую структуру имеет ваше приложение ООП. Если вы используете что-то вроде MVC pattern , вам не нужно использовать SESSION или REQUEST, потому что вы можете «вставить» объекты, которые хотите использовать, в «one». Что это значит?

Быстрый пример:

  1. Пользователь A входит на ваш сайт index.php
  2. Теперь вы можете загрузить контент из статического index.html, но если вы хотите проверить, прошел ли пользователь аутентификацию, чтобы увидеть конкретное содержимое, например, «Логин администратора», вы можете использовать include_once('Authentication.php') и инициировать класс из этого файла, например, <?php $Auth = new Auth_Handler; ?> Это сделает класс Auth также доступным в index.php или любом другом файле, который вы хотите включить в этот класс. Если вы хотите передать возвращаемое значение класса аутентификации в другой файл, например, 'register.php' вы можете использовать сессию или любой другой кэш. Передача целых объектов не рекомендуется из-за их размера. Включение и запуск требуемых классов в начале файлов намного лучше. И передача возвращений SESSION занимает меньше места.

Это действительно зависит от того, какую платформу или API вы хотите использовать, или какой проект вы хотите создать.

1 голос
/ 13 октября 2009

Вы можете использовать $ _SESSION. но это будет только для этой сессии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...