3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php class ContentSecurityPolicy { const DEFAULT_SRC = 'default-src'; const SCRIPT_SRC = 'script-src'; const OBJECT_SRC = 'object-src'; const STYLE_SRC = 'style-src'; const IMG_SRC = 'img-src'; const MEDIA_SRC = 'media-src'; const FRAME_SRC = 'frame-src'; const FONT_SRC = 'font-src'; const CONNECT_SRC = 'connect-src'; const SOURCE_NONE = "'none'"; const SOURCE_SELF = "'self'"; const SOURCE_UNSAFE_INLINE = "'unsafe-inline'"; const SOURCE_UNSAFE_EVAL = "'unsafe-eval'"; private $policy; public function __construct() { $this->policy = array(); $this->policy[self::DEFAULT_SRC] = array(); $this->policy[self::SCRIPT_SRC] = array(); $this->policy[self::OBJECT_SRC] = array(); $this->policy[self::STYLE_SRC] = array(); $this->policy[self::IMG_SRC] = array(); $this->policy[self::MEDIA_SRC] = array(); $this->policy[self::FRAME_SRC] = array(); $this->policy[self::FONT_SRC] = array(); $this->policy[self::CONNECT_SRC] = array(); } private function copy() { $retval = new ContentSecurityPolicy(); foreach ($this->policy as $directive => $sources) { foreach ($sources as $source) { array_push($retval->policy[$directive], $source); } } return $retval; } function addSource($directive, $source) { if (!isset($this->policy[$directive])) { throw new CSPException("Invalid directive"); } $this->policy[$directive][] = $source; return $this; } function toString() { $retval = array(); foreach ($this->policy as $directive => $sources) { if (sizeof($sources) > 0) { $retval[] = join(' ', [$directive, join(' ', $sources)]); } } return join('; ', $retval); } } class CSPException extends \Exception {} $CSP = new ContentSecurityPolicy(); $csp->addSource(ContentSecurityPolicy::DEFAULT_SRC, ContentSecurityPolicy::SOURCE_SELF); $csp->addSource(ContentSecurityPolicy::STYLE_SRC, 'something else'); echo $CSP->toString(); exit("\nDone!\n");
Output for 7.0.5 - 7.1.0
Notice: Undefined variable: csp in /in/N8k0m on line 65 Fatal error: Uncaught Error: Call to a member function addSource() on null in /in/N8k0m:65 Stack trace: #0 {main} thrown in /in/N8k0m on line 65
Process exited with code 255.
Output for 7.0.0 - 7.0.4
Notice: Undefined variable: csp in /in/N8k0m on line 65 Fatal error: Uncaught Error: Call to a member function addSource() on unknown in /in/N8k0m:65 Stack trace: #0 {main} thrown in /in/N8k0m on line 65
Process exited with code 255.
Output for hhvm-3.10.0 - 3.12.0
Notice: Undefined variable: csp in /in/N8k0m on line 65 Fatal error: Uncaught exception 'BadMethodCallException' with message 'Call to a member function addSource() on a non-object (null)' in /in/N8k0m:65 Stack trace: #0 {main}
Process exited with code 255.
Output for 5.6.0 - 5.6.28
Notice: Undefined variable: csp in /in/N8k0m on line 65 Fatal error: Call to a member function addSource() on null in /in/N8k0m on line 65
Process exited with code 255.
Output for 5.4.0 - 5.5.38
Notice: Undefined variable: csp in /in/N8k0m on line 65 Fatal error: Call to a member function addSource() on a non-object in /in/N8k0m on line 65
Process exited with code 255.
Output for 5.1.0 - 5.3.29
Parse error: syntax error, unexpected '[' in /in/N8k0m on line 55
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected '[' in /in/N8k0m on line 55
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/N8k0m on line 3
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_CONST, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/N8k0m on line 3
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/N8k0m on line 3
Process exited with code 255.