Сэн-парни. Я новичок в ООП на PHP. Я научился писать и создавать объекты. Есть ли способ взять объект и передать его другому сценарию? либо используя GET, либо POST или SESSION, или что-то еще. Если нет, то каким образом я могу назначить объект некоторым переменным на одной странице, а затем назначить одному и тому же объекту больше переменных на другой странице?
благодаря
Вы можете хранить объекты в сеансе, но перед тем, как вызывать session_start (), вы должны включить файл, который содержит определение класса (или использовать автозагрузку класса и установить его перед началом сеанса). Например:
На каждой странице:
//include class definition require('class.php'); //start session 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';
Вот пример с автозагрузкой в отношении ответа Тома Хейга:
Перед началом сеанса:
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';
Метод автозагрузки автоматически загрузит объекты во время получения данных из сеанса.
Вы можете сохранить объект на СЕССИИ. Вы можете сериализовать объект и пройти через GET или POST.
Если вы хотите, чтобы объект сохранялся по всему сайту, то SESSION, вероятно, будет вашим лучшим выбором.
Вы можете использовать $ _SESSION. но это будет только для этой сессии.
Использование object
в нескольких «скриптах»:
Во-первых, вам нужно решить, какая структура имеет ваше приложение ООП. Если вы используете что-то вроде шаблона MVC
, вам это не нужно, используя SESSION или REQUEST, потому что вы можете «подключить» объекты, которые хотите использовать, в «один». Что это значит?
Быстрый пример:
include_once('Authentication.php')
и инициировать класс из этого файла, например <?php $Auth = new Auth_Handler; ?>
<?php $Auth = new Auth_Handler; ?>
Это сделает класс Auth также доступным в index.php или любом другом файле, который вы хотите включить в этот класс. Если вы хотите передать возвращаемое значение класса аутентификации другому файлу, например, «register.php», вы можете использовать SESSION или любой другой Cache. Передача целых объектов не рекомендуется из-за их размера. Включение и начало разыскиваемых классов в начале файлов намного лучше. И передача результатов SESSION использует меньше места. Это действительно зависит от того, какую структуру или API вы хотите использовать, или о том, какой проект вы хотите создать.