/** * Get or inject a ProcessWire API variable * * 1. As a getter (option 1): * ========================== * Usage: $this->wire('name'); // name is an API variable name * If 'name' does not exist, a WireException will be thrown. * Specify '*' or 'all' for name to retrieve all API vars (as a Fuel object) * * 2. As a getter (option 2): * ========================== * Usage: $this->wire()->name; // name is an API variable name * Null will be returned if API var does not exist (no Exception thrown). * * 3. As a setter: * =============== * $this->wire('name', $value); * $this->wire('name', $value, true); // lock the API variable so nothing else can overwrite it * $this->wire()->set('name', $value); * $this->wire()->set('name', $value, true); // lock the API variable so nothing else can overwrite it * * 4. As a dependency injector (PW 3.0 only) * ========================================= * $this->wire(new Page()); * When creating a new object, this makes it inject the current PW instance into that object. * * @param string|object $name Name of API variable to retrieve, set, or omit to retrieve the master ProcessWire object * @param null|mixed $value Value to set if using this as a setter, otherwise omit. * @param bool $lock When using as a setter, specify true if you want to lock the value from future changes (default=false) * @return ProcessWire|Wire|Session|Page|Pages|Modules|User|Users|Roles|Permissions|Templates|Fields|Fieldtypes|Sanitizer|Config|Notices|WireDatabasePDO|WireInput|string|mixed * @throws WireException * * */ public function wire($name = '', $value = null, $lock = false) { if (is_null(self::$fuel)) { self::$fuel = new Fuel(); } if ($value !== null) { // setting a fuel value return self::$fuel->set($name, $value, $lock); } if (empty($name)) { // return ProcessWire instance return self::$fuel->wire; } else { if ($name === '*' || $name === 'all') { // return Fuel instance return self::$fuel; } } /* TBA PW3 if(is_object($name)) { // injecting ProcessWire instance to object if($name instanceof Wire) return $name->setWire($this->_wire); // inject fuel, PW 3.0 throw new WireException("Expected Wire instance"); } */ // get API variable $value = self::$fuel->{$name}; return $value; }