/** * Used to inform the loader of its state as a sub loader, or as the top of the chain. * * This is important as it ensures that we do not have more than one loader keeping static acceleration data. * Subloaders need to be "pure" loaders in the sense that they are used to store and retrieve information from stores or the * next loader/data source in the chain. * Nothing fancy, nothing flash. * * @param bool $setting */ protected function set_is_sub_loader($setting = true) { if ($setting) { $this->subloader = true; // Subloaders should not keep static acceleration data. $this->staticacceleration = false; $this->staticaccelerationsize = false; } else { $this->subloader = true; $this->staticacceleration = $this->definition->use_static_acceleration(); if ($this->staticacceleration) { $this->staticaccelerationsize = $this->definition->get_static_acceleration_size(); } } }
/** * Initialises the store instance for a definition. * @param cache_definition $definition */ public function initialise(cache_definition $definition) { // If the definition isn't using static acceleration then we need to be store data here. // The reasoning behind this is that: // - If the definition is using static acceleration then the cache loader is going to // store things in its static array. // - If the definition is not using static acceleration then the cache loader won't try to store anything // and we will need to store it here in order to make sure it is accessible. if ($definition->get_mode() !== self::MODE_APPLICATION) { // Neither the request cache nor the session cache provide static acceleration. $this->persist = true; } else { $this->persist = !$definition->use_static_acceleration(); } }