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

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/smm.picotech.app/public_html/vendor/barryvdh/laravel-ide-helper/src/   drwxr-xr-x
Free 28.6 GB of 117.98 GB (24.24%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

/**
 * Laravel IDE Helper Generator
 *
 * @author    Barry vd. Heuvel <barryvdh@gmail.com>
 * @copyright 2014 Barry vd. Heuvel / Fruitcake Studio (http://www.fruitcakestudio.nl)
 * @license   http://www.opensource.org/licenses/mit-license.php MIT
 * @link      https://github.com/barryvdh/laravel-ide-helper
 */

namespace Barryvdh\LaravelIdeHelper;

use 
Barryvdh\Reflection\DocBlock;
use 
Barryvdh\Reflection\DocBlock\Context;
use 
Barryvdh\Reflection\DocBlock\Serializer as DocBlockSerializer;
use 
Barryvdh\Reflection\DocBlock\Tag\MethodTag;
use 
Closure;
use 
Illuminate\Config\Repository as ConfigRepository;
use 
Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use 
Illuminate\Support\Facades\Facade;
use 
ReflectionClass;

class 
Alias
{
    protected 
$alias;
    
/** @psalm-var class-string $facade */
    
protected $facade;
    protected 
$extends null;
    protected 
$extendsClass null;
    protected 
$extendsNamespace null;
    protected 
$classType 'class';
    protected 
$short;
    protected 
$namespace '__root';
    protected 
$root null;
    protected 
$classes = [];
    protected 
$methods = [];
    protected 
$usedMethods = [];
    protected 
$valid false;
    protected 
$magicMethods = [];
    protected 
$interfaces = [];
    protected 
$phpdoc null;
    protected 
$classAliases = [];

    
/** @var ConfigRepository  */
    
protected $config;

    
/**
     * @param ConfigRepository $config
     * @param string           $alias
     * @psalm-param class-string $facade
     * @param string           $facade
     * @param array            $magicMethods
     * @param array            $interfaces
     */
    
public function __construct($config$alias$facade$magicMethods = [], $interfaces = [])
    {
        
$this->alias $alias;
        
$this->magicMethods $magicMethods;
        
$this->interfaces $interfaces;
        
$this->config $config;

        
// Make the class absolute
        
$facade '\\' ltrim($facade'\\');
        
$this->facade $facade;

        
$this->detectRoot();

        if (!
$this->root || $this->isTrait()) {
            return;
        }

        
$this->valid true;

        
$this->addClass($this->root);
        
$this->detectFake();
        
$this->detectNamespace();
        
$this->detectClassType();
        
$this->detectExtendsNamespace();

        if (!empty(
$this->namespace)) {
            
$this->classAliases = (new UsesResolver())->loadFromClass($this->root);

            
//Create a DocBlock and serializer instance
            
$this->phpdoc = new DocBlock(new ReflectionClass($alias), new Context($this->namespace$this->classAliases));
        }

        if (
$facade === '\Illuminate\Database\Eloquent\Model') {
            
$this->usedMethods = ['decrement''increment'];
        }
    }

    
/**
     * Add one or more classes to analyze
     *
     * @param array|string $classes
     */
    
public function addClass($classes)
    {
        
$classes = (array)$classes;
        foreach (
$classes as $class) {
            if (
class_exists($class) || interface_exists($class)) {
                
$this->classes[] = $class;
            } else {
                echo 
"Class not exists: $class\r\n";
            }
        }
    }

    
/**
     * Check if this class is valid to process.
     * @return bool
     */
    
public function isValid()
    {
        return 
$this->valid;
    }

    
/**
     * Get the classtype, 'interface' or 'class'
     *
     * @return string
     */
    
public function getClasstype()
    {
        return 
$this->classType;
    }

    
/**
     * Get the class which this alias extends
     *
     * @return null|string
     */
    
public function getExtends()
    {
        return 
$this->extends;
    }

    
/**
     * Get the class short name which this alias extends
     *
     * @return null|string
     */
    
public function getExtendsClass()
    {
        return 
$this->extendsClass;
    }

    
/**
     * Get the namespace of the class which this alias extends
     *
     * @return null|string
     */
    
public function getExtendsNamespace()
    {
        return 
$this->extendsNamespace;
    }

    
/**
     * Get the Alias by which this class is called
     *
     * @return string
     */
    
public function getAlias()
    {
        return 
$this->alias;
    }

    
/**
     * Return the short name (without namespace)
     */
    
public function getShortName()
    {
        return 
$this->short;
    }
    
/**
     * Get the namespace from the alias
     *
     * @return string
     */
    
public function getNamespace()
    {
        return 
$this->namespace;
    }

    
/**
     * Get the methods found by this Alias
     *
     * @return array|Method[]
     */
    
public function getMethods()
    {
        if (
count($this->methods) > 0) {
            return 
$this->methods;
        }

        
$this->addMagicMethods();
        
$this->detectMethods();
        return 
$this->methods;
    }

    
/**
     * Detect class returned by ::fake()
     */
    
protected function detectFake()
    {
        
$facade $this->facade;

        if (!
is_subclass_of($facadeFacade::class)) {
            return;
        }

        if (!
method_exists($facade'fake')) {
            return;
        }

        
$real $facade::getFacadeRoot();

        try {
            
$facade::fake();
            
$fake $facade::getFacadeRoot();
            if (
$fake !== $real) {
                
$this->addClass(get_class($fake));
            }
        } finally {
            
$facade::swap($real);
        }
    }

    
/**
     * Detect the namespace
     */
    
protected function detectNamespace()
    {
        if (
strpos($this->alias'\\')) {
            
$nsParts explode('\\'$this->alias);
            
$this->short array_pop($nsParts);
            
$this->namespace implode('\\'$nsParts);
        } else {
            
$this->short $this->alias;
        }
    }

    
/**
     * Detect the extends namespace
     */
    
protected function detectExtendsNamespace()
    {
        if (
strpos($this->extends'\\') !== false) {
            
$nsParts explode('\\'$this->extends);
            
$this->extendsClass array_pop($nsParts);
            
$this->extendsNamespace implode('\\'$nsParts);
        }
    }

    
/**
     * Detect the class type
     */
    
protected function detectClassType()
    {
        
//Some classes extend the facade
        
if (interface_exists($this->facade)) {
            
$this->classType 'interface';
            
$this->extends $this->facade;
        } else {
            
$this->classType 'class';
            if (
class_exists($this->facade)) {
                
$this->extends $this->facade;
            }
        }
    }

    
/**
     * Get the real root of a facade
     *
     * @return bool|string
     */
    
protected function detectRoot()
    {
        
$facade $this->facade;

        try {
            
//If possible, get the facade root
            
if (method_exists($facade'getFacadeRoot')) {
                
$root get_class($facade::getFacadeRoot());
            } else {
                
$root $facade;
            }

            
//If it doesn't exist, skip it
            
if (!class_exists($root) && !interface_exists($root)) {
                return;
            }

            
$this->root $root;

            
//When the database connection is not set, some classes will be skipped
        
} catch (\PDOException $e) {
            
$this->error(
                
'PDOException: ' $e->getMessage() .
                
"\nPlease configure your database connection correctly, or use the sqlite memory driver (-M)." .
                
" Skipping $facade."
            
);
        } catch (
\Exception $e) {
            
$this->error('Exception: ' $e->getMessage() . "\nSkipping $facade.");
        }
    }

    
/**
     * Detect if this class is a trait or not.
     *
     * @return bool
     */
    
protected function isTrait()
    {
        
// Check if the facade is not a Trait
        
return trait_exists($this->facade);
    }

    
/**
     * Add magic methods, as defined in the configuration files
     */
    
protected function addMagicMethods()
    {
        foreach (
$this->magicMethods as $magic => $real) {
            list(
$className$name) = explode('::'$real);
            if ((!
class_exists($className) && !interface_exists($className)) || !method_exists($className$name)) {
                continue;
            }
            
$method = new \ReflectionMethod($className$name);
            
$class = new \ReflectionClass($className);

            if (!
in_array($magic$this->usedMethods)) {
                if (
$class !== $this->root) {
                    
$this->methods[] = new Method($method$this->alias$class$magic$this->interfaces$this->classAliases);
                }
                
$this->usedMethods[] = $magic;
            }
        }
    }

    
/**
     * Get the methods for one or multiple classes.
     *
     * @return string
     */
    
protected function detectMethods()
    {
        foreach (
$this->classes as $class) {
            
$reflection = new \ReflectionClass($class);

            
$methods $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
            if (
$methods) {
                foreach (
$methods as $method) {
                    if (!
in_array($method->name$this->usedMethods)) {
                        
// Only add the methods to the output when the root is not the same as the class.
                        // And don't add the __*() methods
                        
if ($this->extends !== $class && substr($method->name02) !== '__') {
                            
$this->methods[] = new Method(
                                
$method,
                                
$this->alias,
                                
$reflection,
                                
$method->name,
                                
$this->interfaces,
                                
$this->classAliases
                            
);
                        }
                        
$this->usedMethods[] = $method->name;
                    }
                }
            }

            
// Check if the class is macroable
            // (Eloquent\Builder is also macroable but doesn't use Macroable trait)
            
$traits collect($reflection->getTraitNames());
            if (
$traits->contains('Illuminate\Support\Traits\Macroable') || $class === EloquentBuilder::class) {
                
$properties $reflection->getStaticProperties();
                
$macros = isset($properties['macros']) ? $properties['macros'] : [];
                foreach (
$macros as $macro_name => $macro_func) {
                    if (!
in_array($macro_name$this->usedMethods)) {
                        
// Add macros
                        
$this->methods[] = new Macro(
                            
$this->getMacroFunction($macro_func),
                            
$this->alias,
                            
$reflection,
                            
$macro_name,
                            
$this->interfaces,
                            
$this->classAliases
                        
);
                        
$this->usedMethods[] = $macro_name;
                    }
                }
            }
        }
    }

    
/**
     * @param $macro_func
     *
     * @return \ReflectionFunctionAbstract
     * @throws \ReflectionException
     */
    
protected function getMacroFunction($macro_func)
    {
        if (
is_array($macro_func) && is_callable($macro_func)) {
            return new 
\ReflectionMethod($macro_func[0], $macro_func[1]);
        }

        if (
is_object($macro_func) && is_callable($macro_func) && !$macro_func instanceof Closure) {
            return new 
\ReflectionMethod($macro_func'__invoke');
        }

        return new 
\ReflectionFunction($macro_func);
    }

    
/*
     * Get the docblock for this alias
     *
     * @param string $prefix
     * @return mixed
     */
    
public function getDocComment($prefix "\t\t")
    {
        
$serializer = new DocBlockSerializer(1$prefix);

        if (!
$this->phpdoc) {
            return 
'';
        }

        if (
$this->config->get('ide-helper.include_class_docblocks')) {
            
// if a class doesn't expose any DocBlock tags
            // we can perform reflection on the class and
            // add in the original class DocBlock
            
if (count($this->phpdoc->getTags()) === 0) {
                
$class = new ReflectionClass($this->root);
                
$this->phpdoc = new DocBlock($class->getDocComment());
            }
        }

        
$this->removeDuplicateMethodsFromPhpDoc();
        return 
$serializer->getDocComment($this->phpdoc);
    }

    
/**
     * Removes method tags from the doc comment that already appear as functions inside the class.
     * This prevents duplicate function errors in the IDE.
     *
     * @return void
     */
    
protected function removeDuplicateMethodsFromPhpDoc()
    {
        
$methodNames array_map(function (Method $method) {
            return 
$method->getName();
        }, 
$this->getMethods());

        foreach (
$this->phpdoc->getTags() as $tag) {
            if (
$tag instanceof MethodTag && in_array($tag->getMethodName(), $methodNames)) {
                
$this->phpdoc->deleteTag($tag);
            }
        }
    }

    
/**
     * Output an error.
     *
     * @param  string  $string
     * @return void
     */
    
protected function error($string)
    {
        echo 
$string "\r\n";
    }
}

:: 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.004 ]--