2012-05-13 3 views
1

Я пытаюсь придумать простой способ постоянно привязывать объект PHP к памяти, а затем предоставлять его другим другим переходным объектам для сообщения во время обычной работы по обслуживанию запросов страниц. Я все еще относительно новичок в Wordpress, поэтому, возможно, я слишком усложняюсь ... позвольте мне продемонстрировать на примере, что я хотел бы сделать:Связывание объектов с памятью

  1. Имейте UOM (единица измерения) объект загружается при запуске, который обследует базу данных для списка единиц, единиц по умолчанию, категорий единиц (например, фунтов - это измерение imperial), коэффициентов конверсии и т. д.
  2. Последующие запросы на обслуживание, которые хотят использовать преобразования UOM или lookups просто вызовет глобальный объект UOM ($UOM->get_measures_for_category ('speed')). Этот объект уже будет в памяти и не нужно возвращаться в базу данных для обслуживания запросов.
  3. Метод update() в UOM позволяет запускать триггеры, основанные на событиях или таймерах, для запроса объекта UOM обновить себя.

Это всего лишь один пример того, где существует некоторый относительно статический набор данных, который регулярно используется службами запросов, а повторный запрос базы данных будет расточительным. Надеюсь, люди знакомы с этим шаблоном и могут указать на некоторые примеры того, как вы это сделаете в среде Wordpress/PHP.

ответ

0

я не сделал мой вопрос ясно, когда я изначально писал, но на основе разговора с Томом, я согласился повторить это более четко в Stack Overflow.

+0

этот разговор был перенесен на: http://stackoverflow.com/questions/10583319/persistent-objects-in-wordpress-php – ken

3

Для чего вы хотите, это не лучший способ сделать это. Однако то, о чем вы говорите, требует знания одного из фундаментальных тэнномов PHP и программирования в целом, а именно сферы, а именно, что такое глобальная область действия.

Итак, если вы объявите это в глобальном масштабе:

$uom = new UOM_Class(); 

Затем в любой файл потом вы пишете:

global $uom; 
$uom->something(); 

он будет работать.

Это все, однако расточительно, а вы бы лучше со статическими методами, и что-то более, как одноплодной шаблон, например:

UOM::Something(); 

я оставляю это как задача для вас, чтобы узнать, что Синглтон, и в какой области, это фундаментальные тэннеты PHP, и вы не должны требовать знания PHP, не зная о сфере видимости. Лучший способ выразить это, когда в повседневной беседе он называется контекстом, глобальный охват равносилен крику в каждом ухе одновременно. Каждый может получить к нему доступ, и это не то, что вы хотите загрязнить.

Прошу прощения, если мне кажется немного суровым, вот некоторые статьи, которые должны помочь, они говорят о сфере охвата, синглтонах и некоторых других методах его выполнения, например объектные фабрики

http://php.net/manual/en/language.variables.scope.php http://www.homeandlearn.co.uk/php/php8p2.html

http://php.net/manual/en/language.oop5.patterns.php

+0

Я понимаю, что такое синглтоны и объем.Я думаю, вы сделали некоторые неправильные предположения относительно моего уровня опыта. – ken

+0

Вопрос в том, что я не понял жизненный цикл объекта в Wordpress. Мое предположение заключается в том, что оно эффективно без гражданства и что каждый веб-запрос приводит к набору действий, но в конце этих действий - включают ли они объекты-объекты, одноточие, глобальные переменные, что угодно, - что следующий запрос через трубу нет доступа к этим объектам. Я ищу создать пул объектов, которые содержат полустатистическую информацию, к которой у транзакций будет доступ (в идеале через именованное пространство, а не глобальный var), без необходимости каждый раз обращаться к базе данных. – ken

+0

Я полагаю, что методы/технологии, такие как memcached и redis, могут совпадать с моим требованием, но я еще не использовал их, и я думал, что они более универсальны в своем подходе, и поэтому решение для пула общих объектов, которое разработано, может иметь большие преимущества если известно, что шаблон имеет большое повторное использование. – ken

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