File indexing completed on 2024-05-12 04:02:11

0001 <?
0002 /* This is a pseudo PHP file to test Kate's PHP syntax highlighting. */
0003 # TODO: this is incomplete, add more syntax examples!
0004 # this is also a comment.
0005 // Even this is a comment
0006 /** \brief doxygen comment
0007 */ /*normal comment*/
0008 // comment ?> normal text <?php
0009 function test($varname) {
0010   return "bla"; # this is also a comment
0011 }
0012 ?>
0013 
0014 <?php echo("hello test"); ?>
0015 
0016 <html>
0017   <? print "<title>test</title>"; ?>
0018 
0019   <!-- CSS -->
0020   <style>
0021     .inputText {
0022       width: <?php echo $width; ?>px;
0023       text-indent: 10px;
0024     }
0025   </style>
0026 
0027   <!-- JavaScript -->
0028   <script>
0029     var some_js_var = <?php echo $somevar; ?> ;
0030     <?php echo 'alert("Hello there.");'; ?>
0031   </script>
0032   <!-- JavaScript React -->
0033   <script type="text/babel">
0034     <Hello> <?php echo("Hello, hello!"); ?> </Hello> <?php /* aaa */ ?> <div></div>
0035     function a(i) {
0036       <?php echo "var j = 1;"; ?>
0037       return <p>{ i + j }</p>;
0038     }
0039   </script>
0040   <!-- TypeScript -->
0041   <script type="text/typescript">
0042     <?php $timestamp = time(); ?>
0043     class DateTime {
0044       info: string;
0045       constructor() { this.info = <?php echo(date("F d, Y h:i:s", $timestamp)); ?>; }
0046       get() { return this.info; }
0047     }
0048   </script>
0049   <!-- MustacheJS -->
0050   <script type="x-tmpl-mustache">
0051     {{! <?php print "comment"; ?> }}
0052     {{#movie}}
0053       <div>
0054         <h1>{{title}}</h1>
0055         <img src="{{poster}}" alt="{{title}}"/>
0056         <?php echo $movierating; ?> - {{ratings.critics_rating}}
0057       </div>
0058     {{/movie}}
0059   </script>
0060 
0061 </html>
0062 
0063 <?php
0064 $var = <<<DOOH
0065 This is the $string inside the variable (which seems to be rendered as a string)
0066 It works well, I think.
0067 DOOH
0068 
0069 # bug 382527
0070 throw new ParserException("Test {$this->some_var[$index]}\nin {$this->file} is missing.\nThis is bad.");
0071 
0072 $arr = array();
0073 foreach($arr as $i => $v):
0074   echo($i);
0075 endforeach
0076 
0077 echo " $var {$var} ${var} ";
0078 echo " $var[1] {$var[1]} ${var[1]} ";
0079 echo " $var[-1] {$var[-1]} ${var[-1]} ";
0080 echo " $var[i] {$var[i]} ${var[i]} ";
0081 echo " $var[-i] {$var[-i]} ${var[-i]} ";
0082 echo " $var[$i] {$var[$i]} ${var[$i]} ";
0083 echo " $var[-$i] {$var[-$i]} ${var[-$i]} ";
0084 echo " $var[$$i] {$var[$$i]} ${var[$$i]} ";
0085 echo " $var[$x->i] {$var[$x->i]} ${var[$x->i]} ";
0086 echo " $var[$x->$i] {$var[$x->$i]} ${var[$x->$i]} ";
0087 echo " $$var {$$var} $${var} ";
0088 echo " $$var[1] {$$var[1]} $${var[1]} ";
0089 echo " $$var[$i] {$$var[$i]} $${var[$i]} ";
0090 echo " $var[$i] {$var[$i]} ${var[$i]} ";
0091 echo " $var[1+1] {$var[1+1]} ${var[1+1]} ";
0092 echo " $var->mem {$var->mem} ${var->mem} ";
0093 echo " $var->3 {$var->3} ${var->3} ";
0094 echo " $var-> {$var->} ${var->} ";
0095 echo " $var->$mem {$var->$mem} ${var->$mem} ";
0096 echo " ${$x->{'mem'}} ";
0097 echo "\n \t \\ \xff \x";
0098 
0099 echo <<<HTML
0100 <p>bla $var \$var bla\'</p>
0101 HTML;
0102 echo <<<"HTML"
0103 <p>bla $var \$var bla\'</p>
0104 HTML;
0105 echo <<<'HTML'
0106 <p>bla $var \$var bla\'</p>
0107 HTML;
0108 echo <<<DOC
0109 <p>bla $var \$var bla\'</p>
0110 DOC;
0111 echo <<<DOC
0112     <p>bla $var \$var bla\'</p>
0113   DOC;
0114 echo <<<DOC
0115     <p>bla $var \$var bla\'</p>
0116   DOC;
0117 
0118 echo 123456 1_2_34_5 1__2 1_;
0119 echo 0x12345af 0x1_2_3_45_a_f 0x1__2 0x_1 0x1_ 0x1g 0xg;
0120 echo 0b1011 0b1_01_1 0b1__0 0b_1 0b1_ 0b12 0b2;
0121 echo 01234 01_23_4 0_1 0__1 01_ 018 08;
0122 echo 0o1234 0O1_23_4 0o1_1_ 0o1__1 0o_1;
0123 echo 123. .45 123.45 1_23.4_5e1_2;
0124 echo 123.e1 .45e1 123.45e1;
0125 echo 123.e+1 .45e+1 123.45e+1;
0126 echo 123.e++1 ._45e+1 123._45e+1; // bad float
0127 
0128 echo 123...45;
0129 echo add(...[1, 2])."\n";
0130 
0131 function gen_three_nulls() {
0132     foreach (range(1, 3) as $i) {
0133         yield;
0134     }
0135 }
0136 
0137 function &gen_reference() {
0138     $value = 3;
0139 
0140     while ($value > 0) {
0141         yield $value;
0142     }
0143 }
0144 
0145 function gen() {
0146     yield 0; // key 0
0147     yield from inner(); // keys 0-2
0148     yield 4; // key 1
0149 }
0150 
0151 switch (1) {
0152     case 1: echo 'plop';
0153     case 1; echo 'plop';
0154     default: echo 'plop';
0155     default : echo 'plop';
0156 }
0157 
0158 class User
0159 {
0160     public int $id;
0161     public ?string $name;
0162 
0163     public function __construct(int $id, ?string $name)  : void
0164     {
0165         $this->id = $id;
0166         $this->name = $name;
0167     }
0168 }
0169 
0170 class MyClass {
0171     const CONST_VALUE = 'A constant value';
0172 }
0173 
0174 class OtherClass extends MyClass
0175 {
0176     public static $my_static = 'static var';
0177 
0178     public static function doubleColon() {
0179         echo parent::CONST_VALUE . "\n";
0180         echo self::$my_static . "\n";
0181     }
0182 }
0183 
0184 $classname = 'MyClass';
0185 echo $classname::CONST_VALUE;
0186 
0187 echo MyClass::CONST_VALUE;
0188 
0189 $classname = 'OtherClass';
0190 $classname::doubleColon();
0191 
0192 OtherClass::doubleColon();
0193 new $classname::class;
0194 
0195 $user = new User(1234, null);
0196 
0197 $y = 1;
0198 $fn1 = fn($x) => $x + $y;
0199 $fn2 = function ($x) use ($y) {
0200     return $x + $y;
0201 };
0202 
0203 $a = [1,2,3,'x'=>4];
0204 $b = array(1,2,3,'x'=>4);
0205 
0206 namespace A\B\C;
0207 class Exception extends \Exception {}
0208 
0209 $b = new \Exception('hi');
0210 $x = new A\B\Foo('hi');
0211 $n = \strlen($str) - 1;
0212 
0213 $r = $x <=> $y and $z;
0214 
0215 #[ExampleAttribute('Hello world', 42)]
0216 class Foo {}
0217 function foo(#[TestAttr] $bar){
0218 }
0219 
0220 enum Suit {
0221     case Clubs;
0222     case Diamonds;
0223 }
0224 ?>
0225 
0226 <?php if (n): ?>
0227 <p>bla ba</p>
0228 <?php endif ?>