Files
archived-php-langspec/tests/variables/variable_kinds.phpt
Nikita Popov 3261ea2f3b Merge branch 'PHP-5.6'
Conflicts:
	tests/arrays/arrays.php
	tests/arrays/arrays.php.expectf
	tests/basic_concepts/memory_model_and_array_types.php
	tests/basic_concepts/memory_model_and_array_types.php.expect
	tests/basic_concepts/memory_model_and_handle_types.php
	tests/basic_concepts/memory_model_and_resources.php.expect
	tests/basic_concepts/storage_duration.php
	tests/classes/__gets_return_type.php.expect
	tests/classes/__php_incomplete_class.php
	tests/classes/__php_incomplete_class.php.expect
	tests/classes/classes.php.expect
	tests/classes/cloning.php.expectf
	tests/classes/constructors.php.expect
	tests/classes/dynamic_methods.php.expectf
	tests/classes/dynamic_properties.php
	tests/classes/dynamic_properties.php.expect
	tests/classes/dynamic_properties2.php.expectf
	tests/classes/dynamic_properties3.php
	tests/classes/dynamic_properties3.php.expectf
	tests/classes/invoke.php.expect
	tests/classes/invoking.php.expect
	tests/classes/overloading.php
	tests/classes/overloading.php.expect
	tests/classes/overloading_2.php.expectf
	tests/classes/overloading_methods.php.expectf
	tests/classes/overloading_properties.php
	tests/classes/overloading_properties.php.expect
	tests/classes/overloading_properties2.php.expectf
	tests/classes/point2_test1.php.expect
	tests/classes/property_initializer.php
	tests/classes/property_initializer.php.expect
	tests/classes/serializable.php
	tests/classes/serializable.php.expect
	tests/classes/setting_state.php
	tests/classes/sleep_and_wakeup.php
	tests/classes/vehicle_test1.php.expect
	tests/constants/classes.php
	tests/constants/classes.php.expect
	tests/constants/constants.php
	tests/constants/constants.php.expectf
	tests/exception_handling/exception_class_experiment_1.php
	tests/exception_handling/hierarchy_of_exception_classes.php.expect
	tests/exception_handling/jump_from_catch_or_finally_clause.php
	tests/exception_handling/jump_from_catch_or_finally_clause.php.expect
	tests/exception_handling/odds_and_ends.php.expect
	tests/expressions/additive_operators/addition_subtraction_concatenation.php.expect
	tests/expressions/additive_operators/array_concatenation.php
	tests/expressions/additive_operators/array_concatenation.php.expectf
	tests/expressions/assignment_operators/assignment.php.expect
	tests/expressions/binary_logical_operators/binary_logical_operators.php.expect
	tests/expressions/bitwise_and,_or,_xor_operators/bitwise_and_or_xor.php.expect
	tests/expressions/bitwise_shift_operators/bitwise_shift.php
	tests/expressions/bitwise_shift_operators/bitwise_shift.php.expect
	tests/expressions/equality_operators/comparisons.php.expectf
	tests/expressions/error_control_operator/error_control.php.expectf
	tests/expressions/general/associativity.php.expect
	tests/expressions/general/order_of_evaluation.php.expect
	tests/expressions/general/precedence.php.expect
	tests/expressions/general/sequence_points.php.expect
	tests/expressions/instanceof_operator/instanceof.php
	tests/expressions/instanceof_operator/instanceof.php.expect
	tests/expressions/multiplicative_operators/multiplication_division_modulus.php.expectf
	tests/expressions/postfix_operators/exponentiation.php.expect
	tests/expressions/postfix_operators/member_selection_operator.php
	tests/expressions/postfix_operators/post-increment_and_decrement_integer_edge_cases.php.expect
	tests/expressions/postfix_operators/scope_resolution_operator.php.expect
	tests/expressions/postfix_operators/subscripting.php
	tests/expressions/primary_expressions/intrinsics_echo.php.expect
	tests/expressions/primary_expressions/intrinsics_eval.php.expect
	tests/expressions/primary_expressions/intrinsics_exit.php.expect
	tests/expressions/primary_expressions/intrinsics_print.php.expect
	tests/expressions/primary_expressions/primary.php.expect
	tests/expressions/relational_operators/comparisons1.php.expectf
	tests/expressions/relational_operators/comparisons2.php.expectf
	tests/expressions/relational_operators/comparisons3.php.expectf
	tests/expressions/relational_operators/comparisons4.php.expectf
	tests/expressions/relational_operators/comparisons5.php.expectf
	tests/expressions/source_file_inclusion/include.php
	tests/expressions/source_file_inclusion/require.php
	tests/expressions/unary_operators/cast.php
	tests/expressions/unary_operators/cast.php.expectf
	tests/expressions/unary_operators/pre-increment_and_decrement_integer_edge_cases.php.expect
	tests/expressions/unary_operators/unary_arithmetic_operators.php.expect
	tests/functions/anonymous_functions.php
	tests/functions/basics.php
	tests/functions/byrefs.php.expectf
	tests/functions/byrefs_in_array_elements.php.expect
	tests/functions/conditionally_defined_function.php
	tests/functions/conditionally_defined_function.php.expect
	tests/functions/order_of_evaluation.php
	tests/functions/order_of_evaluation.php.expectf
	tests/functions/passing_arguments.php
	tests/functions/recursion.php.expect
	tests/functions/type_hints.php.expect
	tests/functions/variable_functions.php.expect
	tests/interfaces/interfaces.php.expect
	tests/interfaces/vector.php.expect
	tests/lexical_structure/comments.php.expect
	tests/lexical_structure/keywords.php.expect
	tests/lexical_structure/tokens/array_literals.php
	tests/lexical_structure/tokens/array_literals.php.expect
	tests/lexical_structure/tokens/integer_literals_edge_cases.php.expect
	tests/lexical_structure/tokens/point.php
	tests/lexical_structure/tokens/point2.php
	tests/namespaces/name_lookup.php.expect
	tests/namespaces/namespaces1.php
	tests/namespaces/namespaces1.php.expect
	tests/namespaces/namespaces2.php.expect
	tests/namespaces/using_namespaces_2.php
	tests/namespaces/using_namespaces_3.php.expect
	tests/phpt/expressions/source_file_inclusion/limits.inc
	tests/phpt/expressions/source_file_inclusion/mycolors.inc
	tests/scope/scope.php.expect
	tests/statements/expression_statement.php.expect
	tests/statements/iteration/do.php.expect
	tests/statements/iteration/for.php.expect
	tests/statements/jump/break.php.expect
	tests/statements/jump/continue.php.expect
	tests/statements/jump/goto.php.expect
	tests/statements/selection/if.php.expectf
	tests/statements/selection/switch.php
	tests/statements/selection/switch.php.expect
	tests/traits/traits.php
	tests/types/resource/resources.php.expect
	tests/variables/unsetting_variables.php.expectf
	tests/variables/variable_kinds.php
	tests/variables/variable_kinds.php.expect
	tests/variables/variable_variables.php
	tests/variables/variable_variables.php.expectf
2015-01-07 22:49:46 +01:00

204 lines
4.2 KiB
PHP

--TEST--
PHP Spec test generated from ./variables/variable_kinds.php
--FILE--
<?php
/*
+-------------------------------------------------------------+
| Copyright (c) 2014 Facebook, Inc. (http://www.facebook.com) |
+-------------------------------------------------------------+
*/
error_reporting(-1);
echo "---------------- Local constants -------------------\n";
function localConst($p)
{
echo "Inside " . __FUNCTION__ . "\n";
define('COEFFICIENT_1', 2.345); // define two d-constants
echo "COEFFICIENT_1 = " . COEFFICIENT_1 . "\n";
if ($p)
{
echo "COEFFICIENT_1 = " . COEFFICIENT_1 . "\n";
define('FAILURE', TRUE);
echo "FAILURE = " . FAILURE . "\n";
}
}
localConst(TRUE);
echo "COEFFICIENT_1 = " . COEFFICIENT_1 . "\n";
echo "FAILURE = " . FAILURE . "\n"; // as it's visible here, it's not really a local!
echo "---------------- Local variables -------------------\n";
function doit($p1) // assigned the value TRUE when called
{
$count = 10;
// …
if ($p1)
{
$message = "Can't open master file.";
// …
}
// …
}
doit(TRUE);
echo "---------------- Array elements -------------------\n";
echo "---------------- Function statics -------------------\n";
function f()
{
$lv = 1;
static $fs = 1;
static $fs2;
var_dump($fs2); // show default value is NULL
echo "\$lv = $lv, \$fs = $fs\n";
++$lv;
++$fs;
if (TRUE)
{
static $fs3 = 99;
echo "\$fs3 = $fs3\n";
++$fs3;
}
}
for ($i = 1; $i <= 3; ++$i)
f();
echo "---------------- recursive function example -------------------\n";
function factorial($i)
{
if ($i > 1) return $i * factorial($i - 1);
else if ($i == 1) return $i;
else return 0;
}
$result = factorial(10);
echo "\$result = $result\n";
echo "---------------- Global Constants -------------------\n";
const MAX_HEIGHT2 = 10.5; // define two c-constants
const UPPER_LIMIT2 = MAX_HEIGHT2;
define('COEFFICIENT_2', 2.345); // define two d-constants
define('FAILURE2', TRUE);
echo "MAX_HEIGHT2 = " . MAX_HEIGHT2 . "\n";
function globalConst()
{
echo "Inside " . __FUNCTION__ . "\n";
echo "MAX_HEIGHT2 = " . MAX_HEIGHT2 . "\n";
echo "COEFFICIENT_2 = " . COEFFICIENT_2 . "\n";
}
globalConst();
echo "---------------- Global Variables using names directly -------------------\n";
$colors = array("red", "white", "blue");
$min = 10;
$max = 100;
$average = NULL;
global $min, $max; // allowed, but serve no purpose
function compute($p)
{
global $min, $max;
global $average;
$average = ($max + $min)/2;
if ($p)
{
global $result;
$result = 3.456; // initializes a global, creating it if necessary
}
}
compute(TRUE);
echo "\$average = $average\n";
echo "\$result = $result\n";
//var_dump($GLOBALS);
echo "---------------- Global Variables using \$GLOBALS -------------------\n";
$GLOBALS['done'] = FALSE;
var_dump($done);
$GLOBALS['min'] = 10;
$GLOBALS['max'] = 100;
$GLOBALS['average'] = NULL;
global $min, $max; // allowed, but serve no purpose
function compute2($p)
{
$GLOBALS['average'] = ($GLOBALS['max'] + $GLOBALS['min'])/2;
if ($p)
{
$GLOBALS['result'] = 3.456; // initializes a global, creating it if necessary
}
}
compute2(TRUE);
echo "\$average = $average\n";
echo "\$result = $result\n";
//var_dump($GLOBALS);
echo "---------------- instance/static properties & constants -------------------\n";
class Point
{
const MAX_COUNT = 1000;
private static $pointCount = 0;
public $x;
public $y;
}
--EXPECT--
---------------- Local constants -------------------
Inside localConst
COEFFICIENT_1 = 2.345
COEFFICIENT_1 = 2.345
FAILURE = 1
COEFFICIENT_1 = 2.345
FAILURE = 1
---------------- Local variables -------------------
---------------- Array elements -------------------
---------------- Function statics -------------------
NULL
$lv = 1, $fs = 1
$fs3 = 99
NULL
$lv = 1, $fs = 2
$fs3 = 100
NULL
$lv = 1, $fs = 3
$fs3 = 101
---------------- recursive function example -------------------
$result = 3628800
---------------- Global Constants -------------------
MAX_HEIGHT2 = 10.5
Inside globalConst
MAX_HEIGHT2 = 10.5
COEFFICIENT_2 = 2.345
---------------- Global Variables using names directly -------------------
$average = 55
$result = 3.456
---------------- Global Variables using $GLOBALS -------------------
bool(false)
$average = 55
$result = 3.456
---------------- instance/static properties & constants -------------------