!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)

/var/www/html/dokan/script/vendor/nunomaduro/larastan/src/Rules/ModelProperties/   drwxrwxrwx
Free 12.97 GB of 57.97 GB (22.38%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ModelPropertyRule.php (3.59 KB)      -rwxrwxrwx
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

declare(strict_types=1);

namespace 
NunoMaduro\Larastan\Rules\ModelProperties;

use 
Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use 
Illuminate\Database\Eloquent\Model;
use 
Illuminate\Database\Eloquent\Relations\Relation;
use 
Illuminate\Database\Query\Builder;
use 
PhpParser\Node;
use 
PhpParser\Node\Expr\MethodCall;
use 
PHPStan\Analyser\Scope;
use 
PHPStan\Reflection\ClassReflection;
use 
PHPStan\Rules\Rule;
use 
PHPStan\Rules\RuleLevelHelper;
use 
PHPStan\Type\ErrorType;
use 
PHPStan\Type\Generic\GenericObjectType;
use 
PHPStan\Type\ObjectType;
use 
PHPStan\Type\Type;
use 
PHPStan\Type\TypeCombinator;

/**
 * @implements \PHPStan\Rules\Rule<\PhpParser\Node\Expr\MethodCall>
 */
class ModelPropertyRule implements Rule
{
    
/** @var ModelPropertiesRuleHelper */
    
private $modelPropertiesRuleHelper;
    
/**
     * @var RuleLevelHelper
     */
    
private $ruleLevelHelper;

    public function 
__construct(ModelPropertiesRuleHelper $ruleHelperRuleLevelHelper $ruleLevelHelper)
    {
        
$this->modelPropertiesRuleHelper $ruleHelper;
        
$this->ruleLevelHelper $ruleLevelHelper;
    }

    public function 
getNodeType(): string
    
{
        return 
MethodCall::class;
    }

    
/**
     * @param MethodCall $node
     * @param Scope $scope
     *
     * @return string[]
     */
    
public function processNode(Node $nodeScope $scope): array
    {
        if (! 
$node->name instanceof Node\Identifier) {
            return [];
        }

        if (
count($node->args) === 0) {
            return [];
        }

        
$name $node->name->name;
        
$typeResult $this->ruleLevelHelper->findTypeToCheck(
            
$scope,
            
$node->var,
            
'',
            static function (
Type $type) use ($name): bool {
                return 
$type->canCallMethods()->yes() && $type->hasMethod($name)->yes();
            }
        );

        
$type $typeResult->getType();

        if (
$type instanceof ErrorType) {
            return [];
        }

        if (! 
$type->hasMethod($name)->yes()) {
            return [];
        }

        
$modelReflection $this->findModelReflectionFromType($type);

        
$methodReflection $type->getMethod($name$scope);

        return 
$this->modelPropertiesRuleHelper->check($methodReflection$scope$node->args$modelReflection);
    }

    private function 
findModelReflectionFromType(Type $type): ?ClassReflection
    
{
        if ((new 
ObjectType(Builder::class))->isSuperTypeOf($type)->no() &&
            (new 
ObjectType(EloquentBuilder::class))->isSuperTypeOf($type)->no() &&
            (new 
ObjectType(Relation::class))->isSuperTypeOf($type)->no() &&
            (new 
ObjectType(Model::class))->isSuperTypeOf($type)->no()
        ) {
            return 
null;
        }

        
// We expect it to be generic builder or relation class with model type inside
        
if ((! $type instanceof GenericObjectType) && (new ObjectType(Model::class))->isSuperTypeOf($type)->no()) {
            return 
null;
        }

        if (
$type instanceof GenericObjectType) {
            
$modelType $type->getTypes()[0];
        } else {
            
$modelType $type;
        }

        
$modelType TypeCombinator::removeNull($modelType);

        if (! 
$modelType instanceof ObjectType) {
            return 
null;
        }

        if (
$modelType->getClassName() === Model::class) {
            return 
null;
        }

        
$modelReflection $modelType->getClassReflection();

        if (
$modelReflection === null) {
            return 
null;
        }

        if (
$modelReflection->isAbstract()) {
            return 
null;
        }

        return 
$modelReflection;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

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

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