src/View/SSViewer_DataPresenter.php
protected function getValueSource($property)
    {
        // Check for a presenter-specific override
        $overlay = $this->processTemplateOverride($property, $this->overlay);
        if (isset($overlay)) {
            return $overlay;
        }

        // Check if the method to-be-called exists on the target object - if so, don't check any further
        // injection locations
        $on = $this->itemIterator ? $this->itemIterator->current() : $this->item;
        if (isset($on->$property) || method_exists($on, $property)) {
            return null;
        }

        // Check for a presenter-specific override
        $underlay = $this->processTemplateOverride($property, $this->underlay);
        if (isset($underlay)) {
            return $underlay;
        }

        // Then for iterator-specific overrides
        if (array_key_exists($property, self::$iteratorProperties)) {
            $source = self::$iteratorProperties[$property];
            /** @var TemplateIteratorProvider $implementor */
            $implementor = $source['implementor'];
            if ($this->itemIterator) {
                // Set the current iterator position and total (the object instance is the first item in
                // the callable array)
                $implementor->iteratorProperties(
                    $this->itemIterator->key(),
                    $this->itemIteratorTotal
                );
            } else {
                // If we don't actually have an iterator at the moment, act like a list of length 1
                $implementor->iteratorProperties(0, 1);
            }
            return $source;
        }

        // And finally for global overrides
        if (array_key_exists($property, self::$globalProperties)) {
            return self::$globalProperties[$property];  //get the method call
        }

        // No value
        return null;
    }
protected function getValueSource($property)
    {
        // Check for a presenter-specific override
        $overlay = $this->processTemplateOverride($property, $this->overlay);
        if (isset($overlay)) {
            return $overlay;
        }

        // Check if the method to-be-called exists on the target object - if so, don't check any further
        // injection locations
        $on = $this->itemIterator ? $this->itemIterator->current() : $this->item;
        if (isset($on->$property) || method_exists($on, $property)) {
            return null;
        }

        // Check for a presenter-specific override
        $underlay = $this->processTemplateOverride($property, $this->underlay);
        if (isset($underlay)) {
            return $underlay;
        }

        // Then for iterator-specific overrides
        if (array_key_exists($property, self::$iteratorProperties)) {
            $source = self::$iteratorProperties[$property];
            /** @var TemplateIteratorProvider $implementor */
            $implementor = $source['implementor'];
            if ($this->itemIterator) {
                // Set the current iterator position and total (the object instance is the first item in
                // the callable array)
                $implementor->iteratorProperties(
                    $this->itemIterator->key(),
                    $this->itemIteratorTotal
                );
            } else {
                // If we don't actually have an iterator at the moment, act like a list of length 1
                $implementor->iteratorProperties(0, 1);
            }
            return $source;
        }

        // And finally for global overrides
        if (array_key_exists($property, self::$globalProperties)) {
            return self::$globalProperties[$property];  //get the method call
        }

        // No value
        return null;
    }
protected function getValueSource ( $ property ) { // Check for a presenter-specific override $ overlay = $ this -> processTemplateOverride ( $ property , $ this -> overlay ) ; if ( isset ( $ overlay ) ) { return $ overlay ; } // Check if the method to-be-called exists on the target object - if so, don't check any further // injection locations $ on = $ this -> itemIterator ? $ this -> itemIterator -> current ( ) : $ this -> item ; if ( isset ( $ on -> $ property ) || method_exists ( $ on , $ property ) ) { return null ; } // Check for a presenter-specific override $ underlay = $ this -> processTemplateOverride ( $ property , $ this -> underlay ) ; if ( isset ( $ underlay ) ) { return $ underlay ; } // Then for iterator-specific overrides if ( array_key_exists ( $ property , self :: $ iteratorProperties ) ) { $ source = self :: $ iteratorProperties [ $ property ] ; /** @var TemplateIteratorProvider $implementor */ $ implementor = $ source [ 'implementor' ] ; if ( $ this -> itemIterator ) { // Set the current iterator position and total (the object instance is the first item in // the callable array) $ implementor -> iteratorProperties ( $ this -> itemIterator -> key ( ) , $ this -> itemIteratorTotal ) ; } else { // If we don't actually have an iterator at the moment, act like a list of length 1 $ implementor -> iteratorProperties ( 0 , 1 ) ; } return $ source ; } // And finally for global overrides if ( array_key_exists ( $ property , self :: $ globalProperties ) ) { return self :: $ globalProperties [ $ property ] ; //get the method call } // No value return null ; }
Determine source to use for getInjectedValue

@param string $property
@return array|null
Determine source to use for getInjectedValue