public static function exec(): array
    {
        // read file to class var
        self::$output = self::$input = file_get_contents(self::$filePath);
        // add arr type
        self::$arrInput = file(self::$filePath);
        $annotationService = ServiceFactory::getInstance(AnnotationServiceImpl::class);
        // add get namespace from file.
        $className = Main::getClassNameFromFile(self::$input);
        // not has class name , because it's interface or trait
        if (empty($className)) return ['output' => self::$input, 'namespace' => '', 'fileName' => self::$filePath, 'className' => $className];
        // add class name there
        $className = Main::getClassNameFromFile(self::$input);;
        $namespace = Main::getNamespaceFromFile(self::$input) . '\\' . $className;
        $annotationService->setSrcClass($namespace);
        $data = $annotationService->exec();
        // not annotation parse return default
        $default = ['output' => self::$input, 'namespace' => $data['namespace'], 'fileName' => self::$filePath, 'className' => $className];
        if (empty($data['classInfo']['annotation']['name']) && empty($data['varList']) && empty($data['methodList'])) return $default;
        !empty($data['classInfo']['annotation']['name']) and self::encodeClassInfo($data['classInfo']);
        self::updateArrInput();
        !empty($data['varList']) && self::encodeVarList($data['varList']);
        self::updateArrInput();
        !empty($data['methodList']) && self::encodeMethodList($data['methodList']);
        self::updateArrInput();
        return [
            'output' => self::$output,
            'namespace' => $data['namespace'],
            'fileName' => $data['fileName'],
            'className' => $className
        ];
    }