Pinq\Analysis\TypeData\PinqAPI::generatePinqTypeData PHP Method

generatePinqTypeData() protected method

protected generatePinqTypeData ( string $traversableType, string $orderedTraversableType, string $joiningOnTraversableType, string $joiningToTraversableType, boolean $mutable = false ) : array
$traversableType string
$orderedTraversableType string
$joiningOnTraversableType string
$joiningToTraversableType string
$mutable boolean
return array
    protected function generatePinqTypeData($traversableType, $orderedTraversableType, $joiningOnTraversableType, $joiningToTraversableType, $mutable = false)
    {
        $pinqTypes = [];
        $traversableTypeId = TypeId::getObject($traversableType);
        $orderedTraversableTypeId = TypeId::getObject($orderedTraversableType);
        $joiningOnTraversableTypeId = TypeId::getObject($joiningOnTraversableType);
        $joiningToTraversableTypeId = TypeId::getObject($joiningToTraversableType);
        $commonMethods = ['asArray' => INativeType::TYPE_ARRAY, 'asTraversable' => TypeId::getObject(Pinq\ITraversable::ITRAVERSABLE_TYPE), 'asCollection' => TypeId::getObject(Pinq\ICollection::ICOLLECTION_TYPE), 'isSource' => INativeType::TYPE_BOOL, 'getSource' => $traversableTypeId, 'iterate' => INativeType::TYPE_NULL, 'getIterator' => TypeId::getObject('Traversable'), 'getTrueIterator' => TypeId::getObject('Traversable'), 'getIteratorScheme' => TypeId::getObject(IIteratorScheme::IITERATOR_SCHEME_TYPE), 'first' => INativeType::TYPE_MIXED, 'last' => INativeType::TYPE_MIXED, 'count' => INativeType::TYPE_INT, 'isEmpty' => INativeType::TYPE_BOOL, 'aggregate' => INativeType::TYPE_MIXED, 'maximum' => INativeType::TYPE_MIXED, 'minimum' => INativeType::TYPE_MIXED, 'sum' => INativeType::TYPE_MIXED, 'average' => INativeType::TYPE_MIXED, 'all' => INativeType::TYPE_BOOL, 'any' => INativeType::TYPE_BOOL, 'implode' => INativeType::TYPE_STRING, 'contains' => INativeType::TYPE_BOOL, 'where' => $traversableTypeId, 'orderBy' => $orderedTraversableTypeId, 'orderByAscending' => $orderedTraversableTypeId, 'orderByDescending' => $orderedTraversableTypeId, 'skip' => $traversableTypeId, 'take' => $traversableTypeId, 'slice' => $traversableTypeId, 'indexBy' => $traversableTypeId, 'keys' => $traversableTypeId, 'reindex' => $traversableTypeId, 'groupBy' => $traversableTypeId, 'join' => $joiningOnTraversableTypeId, 'groupJoin' => $joiningOnTraversableTypeId, 'select' => $traversableTypeId, 'selectMany' => $traversableTypeId, 'unique' => $traversableTypeId, 'append' => $traversableTypeId, 'whereIn' => $traversableTypeId, 'except' => $traversableTypeId, 'union' => $traversableTypeId, 'intersect' => $traversableTypeId, 'difference' => $traversableTypeId];
        if ($mutable) {
            $commonMethods += ['apply' => INativeType::TYPE_NULL, 'addRange' => INativeType::TYPE_NULL, 'remove' => INativeType::TYPE_NULL, 'removeRange' => INativeType::TYPE_NULL, 'removeWhere' => INativeType::TYPE_NULL, 'clear' => INativeType::TYPE_NULL];
        }
        $pinqTypes[$traversableType] = ['methods' => $commonMethods];
        $pinqTypes[$orderedTraversableType] = ['methods' => ['thenBy' => $orderedTraversableTypeId, 'thenByAscending' => $orderedTraversableTypeId, 'thenByDescending' => $orderedTraversableTypeId] + $commonMethods];
        $joiningMethods = ['withDefault' => $joiningToTraversableTypeId, 'to' => $traversableTypeId];
        if ($mutable) {
            $joiningMethods += ['apply' => INativeType::TYPE_NULL];
        }
        $pinqTypes[$joiningToTraversableType] = ['methods' => $joiningMethods];
        $pinqTypes[$joiningOnTraversableType] = ['methods' => ['on' => $joiningToTraversableTypeId, 'onEquality' => $joiningToTraversableTypeId] + $joiningMethods];
        return $pinqTypes;
    }