1<? 2/* This is a pseudo PHP file to test Kate's PHP syntax highlighting. */ 3# TODO: this is incomplete, add more syntax examples! 4# this is also a comment. 5// Even this is a comment 6/** \brief doxygen comment 7*/ /*normal comment*/ 8// comment ?> normal text <?php 9function test($varname) { 10 return "bla"; # this is also a comment 11} 12?> 13 14<?php echo("hello test"); ?> 15 16<html> 17 <? print "<title>test</title>"; ?> 18 19 <!-- CSS --> 20 <style> 21 .inputText { 22 width: <?php echo $width; ?>px; 23 text-indent: 10px; 24 } 25 </style> 26 27 <!-- JavaScript --> 28 <script> 29 var some_js_var = <?php echo $somevar; ?> ; 30 <?php echo 'alert("Hello there.");'; ?> 31 </script> 32 <!-- JavaScript React --> 33 <script type="text/babel"> 34 <Hello> <?php echo("Hello, hello!"); ?> </Hello> <?php /* aaa */ ?> <div></div> 35 function a(i) { 36 <?php echo "var j = 1;"; ?> 37 return <p>{ i + j }</p>; 38 } 39 </script> 40 <!-- TypeScript --> 41 <script type="text/typescript"> 42 <?php $timestamp = time(); ?> 43 class DateTime { 44 info: string; 45 constructor() { this.info = <?php echo(date("F d, Y h:i:s", $timestamp)); ?>; } 46 get() { return this.info; } 47 } 48 </script> 49 <!-- MustacheJS --> 50 <script type="x-tmpl-mustache"> 51 {{! <?php print "comment"; ?> }} 52 {{#movie}} 53 <div> 54 <h1>{{title}}</h1> 55 <img src="{{poster}}" alt="{{title}}"/> 56 <?php echo $movierating; ?> - {{ratings.critics_rating}} 57 </div> 58 {{/movie}} 59 </script> 60 61</html> 62 63<?php 64$var = <<<DOOH 65This is the $string inside the variable (which seems to be rendered as a string) 66It works well, I think. 67DOOH 68 69# bug 382527 70throw new ParserException("Test {$this->some_var[$index]}\nin {$this->file} is missing.\nThis is bad."); 71 72$arr = array(); 73foreach($arr as $i => $v): 74 echo($i); 75endforeach 76 77echo " $var {$var} ${var} "; 78echo " $var[1] {$var[1]} ${var[1]} "; 79echo " $var[-1] {$var[-1]} ${var[-1]} "; 80echo " $var[i] {$var[i]} ${var[i]} "; 81echo " $var[-i] {$var[-i]} ${var[-i]} "; 82echo " $var[$i] {$var[$i]} ${var[$i]} "; 83echo " $var[-$i] {$var[-$i]} ${var[-$i]} "; 84echo " $var[$$i] {$var[$$i]} ${var[$$i]} "; 85echo " $var[$x->i] {$var[$x->i]} ${var[$x->i]} "; 86echo " $var[$x->$i] {$var[$x->$i]} ${var[$x->$i]} "; 87echo " $$var {$$var} $${var} "; 88echo " $$var[1] {$$var[1]} $${var[1]} "; 89echo " $$var[$i] {$$var[$i]} $${var[$i]} "; 90echo " $var[$i] {$var[$i]} ${var[$i]} "; 91echo " $var[1+1] {$var[1+1]} ${var[1+1]} "; 92echo " $var->mem {$var->mem} ${var->mem} "; 93echo " $var->3 {$var->3} ${var->3} "; 94echo " $var-> {$var->} ${var->} "; 95echo " $var->$mem {$var->$mem} ${var->$mem} "; 96echo " ${$x->{'mem'}} "; 97echo "\n \t \\ \xff \x"; 98 99echo <<<HTML 100<p>bla $var \$var bla\'</p> 101HTML; 102echo <<<"HTML" 103<p>bla $var \$var bla\'</p> 104HTML; 105echo <<<'HTML' 106<p>bla $var \$var bla\'</p> 107HTML; 108echo <<<DOC 109<p>bla $var \$var bla\'</p> 110 DOC 111 DOC; 112DOC;blah 113DOC; 114 115echo 123456 1_2_34_5 1__2 1_; 116echo 0x12345af 0x1_2_3_45_a_f 0x1__2 0x_1 0x1_ 0x1g 0xg; 117echo 0b1011 0b1_01_1 0b1__0 0b_1 0b1_ 0b12 0b2; 118echo 01234 01_23_4 0_1 0__1 01_ 018 08; 119echo 0o1234 0O1_23_4 0o1_1_ 0o1__1 0o_1; 120echo 123. .45 123.45 1_23.4_5e1_2; 121echo 123.e1 .45e1 123.45e1; 122echo 123.e+1 .45e+1 123.45e+1; 123echo 123.e++1 ._45e+1 123._45e+1; // bad float 124 125echo 123...45; 126echo add(...[1, 2])."\n"; 127 128function gen_three_nulls() { 129 foreach (range(1, 3) as $i) { 130 yield; 131 } 132} 133 134function &gen_reference() { 135 $value = 3; 136 137 while ($value > 0) { 138 yield $value; 139 } 140} 141 142function gen() { 143 yield 0; // key 0 144 yield from inner(); // keys 0-2 145 yield 4; // key 1 146} 147 148switch (1) { 149 case 1: echo 'plop'; 150 case 1; echo 'plop'; 151 default: echo 'plop'; 152 default : echo 'plop'; 153} 154 155class User 156{ 157 public int $id; 158 public ?string $name; 159 160 public function __construct(int $id, ?string $name) : void 161 { 162 $this->id = $id; 163 $this->name = $name; 164 } 165} 166 167class MyClass { 168 const CONST_VALUE = 'A constant value'; 169} 170 171class OtherClass extends MyClass 172{ 173 public static $my_static = 'static var'; 174 175 public static function doubleColon() { 176 echo parent::CONST_VALUE . "\n"; 177 echo self::$my_static . "\n"; 178 } 179} 180 181$classname = 'MyClass'; 182echo $classname::CONST_VALUE; 183 184echo MyClass::CONST_VALUE; 185 186$classname = 'OtherClass'; 187$classname::doubleColon(); 188 189OtherClass::doubleColon(); 190new $classname::class; 191 192$user = new User(1234, null); 193 194$y = 1; 195$fn1 = fn($x) => $x + $y; 196$fn2 = function ($x) use ($y) { 197 return $x + $y; 198}; 199 200$a = [1,2,3,'x'=>4]; 201$b = array(1,2,3,'x'=>4); 202 203namespace A\B\C; 204class Exception extends \Exception {} 205 206$b = new \Exception('hi'); 207$x = new A\B\Foo('hi'); 208$n = \strlen($str) - 1; 209 210$r = $x <=> $y and $z; 211 212#[ExampleAttribute('Hello world', 42)] 213class Foo {} 214function foo(#[TestAttr] $bar){ 215} 216 217enum Suit { 218 case Clubs; 219 case Diamonds; 220} 221?> 222 223<?php if (n): ?> 224<p>bla ba</p> 225<?php endif ?> 226