<?php /** * A Feature Wish for PHP 6 * ------------------------ * Class variable assignments with * concatenation support and support * for referencing constants and variables. * * Basically it's a modification to PHPs reference handling. * * Implications: * - a globally defined constant is assignable to a variable * - a globally defined constant is concat-able and assignable to a variable * - a scoped defined constant is assignable to a variable * - a scoped defined constant is concat-able and assignable to a variable * - a globally defined closure variable is assignable to a class-scope variable * - a globally defined closure variable is concat-able and assignable to a class-scope variable */ // example "assign with self defined constant concat" define('CONSTANT', 'My '); class A { public $variable = CONSTANT . 'String'; } echo A->variable; // Result // Parse error: syntax error, unexpected '.', expecting ',' or ';' in helloWorld.php on line 5 // example "assign (php env) constant concat" class B { public $variable = DIRECTORY_SEPARATOR . 'String'; // use case: public $file = dirname(__DIR__) . 'filename.ini'; } echo B->variable; // Result // Parse error: syntax error, unexpected '.', expecting ',' or ';' in helloWorld.php on line 13 // example "assign array value concat" $array = ['A' => 'ABC', 'B' => 'BBC', 'C' => 'CBC']; class C { global $array; public $variable = $array['A'] . 'String'; } echo C->variable; // Result // Parse error: syntax error, unexpected '$array' (T_VARIABLE) in helloWorld.php on line 22 // example "assign with closure concat" $closure = function() { return 'My '; } class D { public $variable = $closure . 'String'; } echo D->variable; // Result // Parse error: syntax error, unexpected 'class' (T_CLASS) in helloWorld.php on line 32