!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/uploads/script/vendor/nunomaduro/larastan/src/Properties/   drwxr-xr-x
Free 13.22 GB of 57.97 GB (22.8%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ModelRelationsExtension.php (4.09 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

declare(strict_types=1);

namespace 
NunoMaduro\Larastan\Properties;

use 
Illuminate\Database\Eloquent\Model;
use 
Illuminate\Database\Eloquent\Relations\Relation;
use 
Illuminate\Support\Str;
use 
NunoMaduro\Larastan\Concerns;
use 
NunoMaduro\Larastan\Methods\BuilderHelper;
use 
NunoMaduro\Larastan\Types\RelationParserHelper;
use 
PHPStan\Analyser\OutOfClassScope;
use 
PHPStan\Reflection\Annotations\AnnotationsPropertiesClassReflectionExtension;
use 
PHPStan\Reflection\BrokerAwareExtension;
use 
PHPStan\Reflection\ClassReflection;
use 
PHPStan\Reflection\ParametersAcceptorSelector;
use 
PHPStan\Reflection\PropertiesClassReflectionExtension;
use 
PHPStan\Reflection\PropertyReflection;
use 
PHPStan\Type\Generic\GenericObjectType;
use 
PHPStan\Type\MixedType;
use 
PHPStan\Type\NeverType;
use 
PHPStan\Type\NullType;
use 
PHPStan\Type\ObjectType;
use 
PHPStan\Type\UnionType;

/**
 * @internal
 */
final class ModelRelationsExtension implements PropertiesClassReflectionExtensionBrokerAwareExtension
{
    use 
Concerns\HasBroker;
    use 
Concerns\HasContainer;

    
/** @var RelationParserHelper */
    
private $relationParserHelper;

    
/** @var AnnotationsPropertiesClassReflectionExtension */
    
private $annotationExtension;

    
/** @var BuilderHelper */
    
private $builderHelper;

    public function 
__construct(
        
RelationParserHelper $relationParserHelper,
        
AnnotationsPropertiesClassReflectionExtension $annotationExtension,
        
BuilderHelper $builderHelper)
    {
        
$this->relationParserHelper $relationParserHelper;
        
$this->annotationExtension $annotationExtension;
        
$this->builderHelper $builderHelper;
    }

    public function 
hasProperty(ClassReflection $classReflectionstring $propertyName): bool
    
{
        if (! 
$classReflection->isSubclassOf(Model::class)) {
            return 
false;
        }

        if (
$this->annotationExtension->hasProperty($classReflection$propertyName)) {
            return 
false;
        }

        
$hasNativeMethod $classReflection->hasNativeMethod($propertyName);

        if (! 
$hasNativeMethod) {
            return 
false;
        }

        
$returnType ParametersAcceptorSelector::selectSingle($classReflection->getNativeMethod($propertyName)->getVariants())->getReturnType();

        if (! (new 
ObjectType(Relation::class))->isSuperTypeOf($returnType)->yes()) {
            return 
false;
        }

        return 
true;
    }

    public function 
getProperty(ClassReflection $classReflectionstring $propertyName): PropertyReflection
    
{
        
$method $classReflection->getMethod($propertyName, new OutOfClassScope());

        
/** @var ObjectType $returnType */
        
$returnType ParametersAcceptorSelector::selectSingle($method->getVariants())->getReturnType();

        if (
$returnType instanceof GenericObjectType) {
            
/** @var ObjectType $relatedModelType */
            
$relatedModelType $returnType->getTypes()[0];
            
$relatedModelClassName $relatedModelType->getClassName();
        } else {
            
$relatedModelClassName $this
                
->relationParserHelper
                
->findRelatedModelInRelationMethod($method);
        }

        if (
$relatedModelClassName === null) {
            
$relatedModelClassName Model::class;
        }

        
$relatedModel = new ObjectType($relatedModelClassName);
        
$collectionClass $this->builderHelper->determineCollectionClassName($relatedModelClassName);

        if (
Str::contains($returnType->getClassName(), 'Many')) {
            return new 
ModelProperty(
                
$classReflection,
                new 
GenericObjectType($collectionClass, [$relatedModel]),
                new 
NeverType(), false
            
);
        }

        if (
Str::endsWith($returnType->getClassName(), 'MorphTo')) {
            return new 
ModelProperty($classReflection, new UnionType([
                new 
ObjectType(Model::class),
                new 
MixedType(),
            ]), new 
NeverType(), false);
        }

        return new 
ModelProperty($classReflection, new UnionType([
            
$relatedModel,
            new 
NullType(),
        ]), new 
NeverType(), false);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0076 ]--