src/CSPBuilder.php
public function compile(): string
    {
        $ruleKeys = \array_keys($this->policies);
        if (\in_array('report-only', $ruleKeys)) {
            $this->reportOnly = !!$this->policies['report-only'];
        } else {
            $this->reportOnly = false;
        }

        $compiled = [];

        foreach (self::$directives as $dir) {
            if (\in_array($dir, $ruleKeys)) {
                if (empty($ruleKeys)) {
                    if ($dir === 'base-uri') {
                        continue;
                    }
                }
                $compiled []= $this->compileSubgroup(
                    $dir,
                    $this->policies[$dir]
                );
            }
        }

        if (!empty($this->policies['report-uri'])) {
            if (!\is_string($this->policies['report-uri'])) {
                throw new \TypeError('report-uri policy somehow not a string');
            }
            if ($this->supportOldBrowsers) {
                $compiled [] = 'report-uri ' . $this->policies['report-uri'] . '; ';
            }
            $compiled []= 'report-to ' . $this->policies['report-uri'] . '; ';
        }
        if (!empty($this->policies['upgrade-insecure-requests'])) {
            $compiled []= 'upgrade-insecure-requests';
        }

        $this->compiled = \implode('', $compiled);
        $this->needsCompile = false;
        return $this->compiled;
    }
public function compile(): string
    {
        $ruleKeys = \array_keys($this->policies);
        if (\in_array('report-only', $ruleKeys)) {
            $this->reportOnly = !!$this->policies['report-only'];
        } else {
            $this->reportOnly = false;
        }

        $compiled = [];

        foreach (self::$directives as $dir) {
            if (\in_array($dir, $ruleKeys)) {
                if (empty($ruleKeys)) {
                    if ($dir === 'base-uri') {
                        continue;
                    }
                }
                $compiled []= $this->compileSubgroup(
                    $dir,
                    $this->policies[$dir]
                );
            }
        }

        if (!empty($this->policies['report-uri'])) {
            if (!\is_string($this->policies['report-uri'])) {
                throw new \TypeError('report-uri policy somehow not a string');
            }
            if ($this->supportOldBrowsers) {
                $compiled [] = 'report-uri ' . $this->policies['report-uri'] . '; ';
            }
            $compiled []= 'report-to ' . $this->policies['report-uri'] . '; ';
        }
        if (!empty($this->policies['upgrade-insecure-requests'])) {
            $compiled []= 'upgrade-insecure-requests';
        }

        $this->compiled = \implode('', $compiled);
        $this->needsCompile = false;
        return $this->compiled;
    }
public function compile ( ) : string { $ ruleKeys = \ array_keys ( $ this -> policies ) ; if ( \ in_array ( 'report-only' , $ ruleKeys ) ) { $ this -> reportOnly = ! ! $ this -> policies [ 'report-only' ] ; } else { $ this -> reportOnly = false ; } $ compiled = [ ] ; foreach ( self :: $ directives as $ dir ) { if ( \ in_array ( $ dir , $ ruleKeys ) ) { if ( empty ( $ ruleKeys ) ) { if ( $ dir === 'base-uri' ) { continue ; } } $ compiled [ ] = $ this -> compileSubgroup ( $ dir , $ this -> policies [ $ dir ] ) ; } } if ( ! empty ( $ this -> policies [ 'report-uri' ] ) ) { if ( ! \ is_string ( $ this -> policies [ 'report-uri' ] ) ) { throw new \ TypeError ( 'report-uri policy somehow not a string' ) ; } if ( $ this -> supportOldBrowsers ) { $ compiled [ ] = 'report-uri ' . $ this -> policies [ 'report-uri' ] . '; ' ; } $ compiled [ ] = 'report-to ' . $ this -> policies [ 'report-uri' ] . '; ' ; } if ( ! empty ( $ this -> policies [ 'upgrade-insecure-requests' ] ) ) { $ compiled [ ] = 'upgrade-insecure-requests' ; } $ this -> compiled = \ implode ( '' , $ compiled ) ; $ this -> needsCompile = false ; return $ this -> compiled ; }
Compile the current policies into a CSP header

@return string
@throws \TypeError
Compile the current policies into a CSP header