This file is indexed.

/usr/share/php/ApiGen/Reflection/Extractors/MagicPropertyExtractor.php is in php-apigen 4.1.2-1ubuntu2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
<?php

/**
 * This file is part of the ApiGen (http://apigen.org)
 *
 * For the full copyright and license information, please view
 * the file license.md that was distributed with this source code.
 */

namespace ApiGen\Reflection\Extractors;

use ApiGen\Reflection\ReflectionClass;
use ApiGen\Reflection\ReflectionPropertyMagic;


class MagicPropertyExtractor
{

	/**
	 * @return ReflectionPropertyMagic[]|array
	 */
	public function extractFromClass(ReflectionClass $reflectionClass)
	{
		$properties = [];
		if ($parentClass = $reflectionClass->getParentClass()) {
			$properties += $this->extractFromParentClass($parentClass, $reflectionClass->isDocumented());
		}

		if ($traits = $reflectionClass->getTraits()) {
			$properties += $this->extractFromTraits($traits, $reflectionClass->isDocumented());
		}
		return $properties;
	}


	/**
	 * @param ReflectionClass $parent
	 * @param bool $isDocumented
	 * @return ReflectionPropertyMagic[]
	 */
	private function extractFromParentClass(ReflectionClass $parent, $isDocumented)
	{
		$properties = [];
		while ($parent) {
			$properties = $this->extractOwnFromClass($parent, $isDocumented, $properties);
			$parent = $parent->getParentClass();
		}
		return $properties;
	}


	/**
	 * @param array $traits
	 * @param bool $isDocumented
	 * @return ReflectionPropertyMagic[]
	 */
	private function extractFromTraits($traits, $isDocumented)
	{
		$properties = [];
		foreach ($traits as $trait) {
			if ( ! $trait instanceof ReflectionClass) {
				continue;
			}
			$properties = $this->extractOwnFromClass($trait, $isDocumented, $properties);
		}
		return $properties;
	}


	/**
	 * @param ReflectionClass $reflectionClass
	 * @param bool $isDocumented
	 * @param array $properties
	 * @return ReflectionPropertyMagic[]
	 */
	private function extractOwnFromClass(ReflectionClass $reflectionClass, $isDocumented, array $properties)
	{
		foreach ($reflectionClass->getOwnMagicProperties() as $property) {
			if ($this->canBeExtracted($isDocumented, $properties, $property)) {
				$properties[$property->getName()] = $property;
			}
		}
		return $properties;
	}


	/**
	 * @param bool $isDocumented
	 * @param array $properties
	 * @param ReflectionPropertyMagic $property
	 * @return bool
	 */
	private function canBeExtracted($isDocumented, array $properties, ReflectionPropertyMagic $property)
	{
		if (isset($properties[$property->getName()])) {
			return FALSE;
		}
		if ($isDocumented && ! $property->isDocumented()) {
			return FALSE;
		}
		return TRUE;
	}

}