/** * Get a property via dot syntax: field.subfield (static) * * Static version for internal core use. Use the non-static getDot() instead. * * @param string $key * @param Wire $from The instance you want to pull the value from * @return null|mixed Returns value if found or null if not * */ public static function _getDot($key, Wire $from) { $key = trim($key, '.'); if (strpos($key, '.')) { // dot present $keys = explode('.', $key); // convert to array $key = array_shift($keys); // get first item } else { // dot not present $keys = array(); } if (Wire::getFuel($key) !== null) { return null; } // don't allow API vars to be retrieved this way if ($from instanceof WireData) { $value = $from->get($key); } else { if ($from instanceof WireArray) { $value = $from->getProperty($key); } else { $value = $from->{$key}; } } if (!count($keys)) { return $value; } // final value if (is_object($value)) { if (count($keys) > 1) { $keys = implode('.', $keys); // convert back to string if ($value instanceof WireData) { $value = $value->getDot($keys); } else { $value = self::_getDot($keys, $value); } } else { $key = array_shift($keys); // just one key left, like 'title' if ($value instanceof WireData) { $value = $value->get($key); } else { if ($value instanceof WireArray) { if ($key == 'count') { $value = count($value); } else { $a = array(); foreach ($value as $v) { $a[] = $v->get($key); } $value = $a; } } } } } else { // there is a dot property remaining and nothing to send it to $value = null; } return $value; }
/** * Render an object to a string * * @param Wire|object $value * @return string * */ protected function objectToString($value) { if ($value instanceof WireArray && !$value->count()) { return ''; } if ($value instanceof Page) { return $value->get('title|name'); } if ($value instanceof Pagefiles || $value instanceof Pagefile) { $out = $this->renderInputfieldValue($value); } else { $className = get_class($value); $out = (string) $value; if ($out === $className) { // just the class name probably isn't useful here, see if we can do do something else with it $this->renderIsUseless = true; } } return $out; }
/** * Render an object to a string * * @param Wire|object $value * @return string * */ protected function objectToString($value) { if ($value instanceof Page) { return $value->get('title|name'); } $className = get_class($value); $out = (string) $value; if ($out === $className) { // just the class name probably isn't useful here, see if we can do do something else with it $this->renderIsUseless = true; } return $out; }