в сессиях хранить - это нормально? допустим сериализировать, потом записать в сессию?
Спустя 4 минуты, 37 секунд (12.11.2010 - 01:35) Sanchopansa написал(а):
они итак хранятся.. в памяти.. или это неправильно задан вопрос?
Спустя 1 минута, 17 секунд (12.11.2010 - 01:36) inpost написал(а):
Можно вообще в отдельном файле и подключать в начале каждой страницы:
include './F_obj.php';
include './F_obj.php';
Спустя 9 минут, 57 секунд (12.11.2010 - 01:46) Guest написал(а):
inpost
я говорю про объекты(экземпляр), а не класс...
Sanchopansa
они хранятся в памяти в течение одного скрипта.
в других языках, а если конкретно , например в actionscript, весь процесс разработки - как одно целое, создавая экземпляр - его можно использовать везде.
А что, если я хочу чтобы и тут все как одно целое было, но получается создавая экземпляр класса, я понимаю, что после исполнения данной страницы - он сдохнет.
вот и думаю, засовывать их в сессию? и удалять после использования, или как? как на php делается?
я говорю про объекты(экземпляр), а не класс...
Sanchopansa
они хранятся в памяти в течение одного скрипта.
в других языках, а если конкретно , например в actionscript, весь процесс разработки - как одно целое, создавая экземпляр - его можно использовать везде.
А что, если я хочу чтобы и тут все как одно целое было, но получается создавая экземпляр класса, я понимаю, что после исполнения данной страницы - он сдохнет.
вот и думаю, засовывать их в сессию? и удалять после использования, или как? как на php делается?
Спустя 6 минут, 19 секунд (12.11.2010 - 01:52) Sanchopansa написал(а):
блин.. ну можешь еще ИМХО в БД писать... это как тебе угодно будет....
Спустя 5 минут, 35 секунд (12.11.2010 - 01:58) ZSH написал(а):
file_put_contents('obj_1.php', seirialise($obj)); // сохраняем
$obj = unserialize(file_get_contents('obj_1.php')); //считываем
Спустя 14 минут, 31 секунда (12.11.2010 - 02:12) Guest написал(а):
ZSH
это если на сайте один пользователь я так понимаю))
это если на сайте один пользователь я так понимаю))
Спустя 24 минуты, 7 секунд (12.11.2010 - 02:37) ZSH написал(а):
Это для примера, если объект большой то лучше сохранить в файл с уникальным именем
хотя можно и в сессии
хотя можно и в сессии
Спустя 16 часов, 45 минут, 26 секунд (12.11.2010 - 19:22) linker написал(а):
Кэш.
Спустя 19 дней, 16 часов, 12 минут, 38 секунд (2.12.2010 - 11:35) ramallah написал(а):
я делаю так для глобальных классов (для примера):
1. Создаю файл с классом.
database.php, BDClass()
2. В самом первом index.php подключаю и создаю объект и объявляю его как global.
include_once("database.php");
global $db;
$db = new BDClass();
3. Для использования в других классах перед использованием снова пишу:
global $db
тем самым получая линк на объект.
1. Создаю файл с классом.
database.php, BDClass()
2. В самом первом index.php подключаю и создаю объект и объявляю его как global.
include_once("database.php");
global $db;
$db = new BDClass();
3. Для использования в других классах перед использованием снова пишу:
global $db
тем самым получая линк на объект.
Спустя 1 час, 11 минут, 16 секунд (2.12.2010 - 12:46) SlavaFr написал(а):
если оbjects действительно пренадлежат определенному клиенту и должны сохронятся на протяжении одной сессии, то конечно можно для этих целей использовать сессию. к стате обсолютно не обязательно object сериалозировать, так как это проиходит автоматически.
$_SESSION['odinobjekt']=$instance;
Важно конечно если object состоит из ресурсов правильно описать в class как он должен сериализироватся и десериализироватся используя методы __sleep() и __wakeup()
$_SESSION['odinobjekt']=$instance;
Важно конечно если object состоит из ресурсов правильно описать в class как он должен сериализироватся и десериализироватся используя методы __sleep() и __wakeup()
Спустя 20 дней, 3 часа, 55 минут, 29 секунд (22.12.2010 - 16:41) elliot написал(а):
Если получить доступ к объектам в различных частях программы, то я пользуюсь 2-мя паттернами:
1) Singleton (одиночка) - когда нужен 1 объект одного класса:
2) Registry (реестр) - когда нужно хранить несколько объектов разных классов:
Всем кто не читал, советую найти и прочитать книгу Мартина Фаулера "Архитектура корпоративных программных приложений". В сети находил на русском. Если не найдете стукните на мыло в профиле - отправлю :)
1) Singleton (одиночка) - когда нужен 1 объект одного класса:
class Logger {
static $instance = null;
static function getInstance()
{
if (self::$instance == null) {
self::$instance = new self();
}
return self::$instance;
}
public function log($message)
{
// логирование сообщения
}
}
// доступ из любого места приложения к единственному экземпляру класса
Logger::getInstance()->log('hello');
// или получаем объект
$logger = Logger::getInstance();
$logger->log('hello');
2) Registry (реестр) - когда нужно хранить несколько объектов разных классов:
class Registry {
static protected $storage;
static function &get($name)
{
if (self::has($name)) {
return self::$storage[$name];
}
return null;
}
static function set($name, &$item)
{
self::$storage[$name] = $item;
}
static function has($name)
{
return isset(self::$storage[$name]);
}
static function getData()
{
return self::$storage;
}
}
// рассмотрим на примере комментария ramallah
include_once("database.php");
Registry::set('db', new BDClass());
// в другом файле, чтобы не писать глобал (что отвратительно!) пишем:
$db = Registry::get('db');
Всем кто не читал, советую найти и прочитать книгу Мартина Фаулера "Архитектура корпоративных программных приложений". В сети находил на русском. Если не найдете стукните на мыло в профиле - отправлю :)
Спустя 29 минут, 46 секунд (22.12.2010 - 17:11) Гость_KaFe написал(а):
elliot да именно, хранить лучше в них. Все остальные советы УГ, кроме кэша. Вопрос просто был задан не правильно