Nette\Utils\ObjectMixin::get PHP Method

get() public static method

__get() implementation.
public static get ( $_this, $name ) : mixed
return mixed property value
    public static function &get($_this, $name)
    {
        $class = get_class($_this);
        $uname = ucfirst($name);
        $methods =& self::getMethods($class);
        if ($name === '') {
            throw new MemberAccessException("Cannot read a class '{$class}' property without name.");
        } elseif (isset($methods[$m = 'get' . $uname]) || isset($methods[$m = 'is' . $uname])) {
            // property getter
            if ($methods[$m] === 0) {
                $methods[$m] = (new \ReflectionMethod($class, $m))->returnsReference();
            }
            if ($methods[$m] === TRUE) {
                return $_this->{$m}();
            } else {
                $val = $_this->{$m}();
                return $val;
            }
        } elseif (isset($methods[$name])) {
            // public method as closure getter
            if (preg_match('#^(is|get|has)([A-Z]|$)#', $name) && !(new \ReflectionMethod($class, $name))->getNumberOfRequiredParameters()) {
                trigger_error("Did you forget parentheses after {$name}" . self::getSource() . '?', E_USER_WARNING);
            }
            $val = Callback::closure($_this, $name);
            return $val;
        } elseif (isset($methods['set' . $uname])) {
            // property getter
            throw new MemberAccessException("Cannot read a write-only property {$class}::\${$name}.");
        } else {
            self::strictGet($class, $name);
        }
    }

Usage Example

Example #1
0
 /**
  * Returns value of column / referenced row
  *
  * @param $key
  * @return mixed|HyperRow|HyperSelection
  */
 public function &__get($key)
 {
     // Try to get method - getter
     if (ObjectMixin::has($this, $key)) {
         return ObjectMixin::get($this, $key);
     }
     // Otherwise get ActiveRow property
     $result = $this->activeRow->__get($key);
     if ($result instanceof ActiveRow) {
         $hyperrow = $this->factory->createRow($result, $result->getTable()->getName());
         return $hyperrow;
     }
     return $result;
 }
All Usage Examples Of Nette\Utils\ObjectMixin::get