private function discoverCliName()

in agent/php/ElasticApm/Impl/AutoInstrument/TransactionForExtensionRequest.php [428:471]


    private function discoverCliName(): string
    {
        global $argc, $argv;

        /** @noinspection PhpConditionAlreadyCheckedInspection */
        if (
            !isset($argc)
            || ($argc <= 0)
            || !isset($argv)
            || (count($argv) == 0)
            || !is_string($argv[0])
            || TextUtil::isEmptyString($argv[0])
        ) {
            ($loggerProxy = $this->logger->ifDebugLevelEnabled(__LINE__, __FUNCTION__))
            && $loggerProxy->log(
                'Could not discover CLI script name - using default transaction name',
                ['DEFAULT_NAME' => self::DEFAULT_NAME]
            );
            return self::DEFAULT_NAME;
        }

        $cliScriptName = self::sanitizeCliName(basename($argv[0]));
        if (
            ($argc < 2)
            || (count($argv) < 2)
            || ($cliScriptName !== self::LARAVEL_ARTISAN_COMMAND_SCRIPT)
        ) {
            ($loggerProxy = $this->logger->ifDebugLevelEnabled(__LINE__, __FUNCTION__))
            && $loggerProxy->log(
                'Using CLI script name as transaction name',
                ['cliScriptName' => $cliScriptName, 'argc' => $argc, 'argv' => $argv]
            );
            return $cliScriptName;
        }

        $txName = $cliScriptName . ' ' . self::sanitizeCliName($argv[1]);
        ($loggerProxy = $this->logger->ifDebugLevelEnabled(__LINE__, __FUNCTION__))
        && $loggerProxy->log(
            'CLI script is Laravel ' . self::LARAVEL_ARTISAN_COMMAND_SCRIPT . ' command with arguments'
            . ' - including the first argument in transaction name',
            ['txName' => $txName, 'argc' => $argc, 'argv' => $argv]
        );
        return $txName;
    }