mirror of
https://github.com/php/php-src.git
synced 2024-12-02 22:34:55 +08:00
d679f02295
This patch adds missing newlines, trims multiple redundant final newlines into a single one, and trims redundant leading newlines in all *.phpt sections. According to POSIX, a line is a sequence of zero or more non-' <newline>' characters plus a terminating '<newline>' character. [1] Files should normally have at least one final newline character. C89 [2] and later standards [3] mention a final newline: "A source file that is not empty shall end in a new-line character, which shall not be immediately preceded by a backslash character." Although it is not mandatory for all files to have a final newline fixed, a more consistent and homogeneous approach brings less of commit differences issues and a better development experience in certain text editors and IDEs. [1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_206 [2] https://port70.net/~nsz/c/c89/c89-draft.html#2.1.1.2 [3] https://port70.net/~nsz/c/c99/n1256.html#5.1.1.2
73 lines
1.6 KiB
PHP
73 lines
1.6 KiB
PHP
--TEST--
|
|
Test script to verify that magic methods should be called only once when accessing an unset property.
|
|
--CREDITS--
|
|
Marco Pivetta <ocramius@gmail.com>
|
|
--FILE--
|
|
<?php
|
|
class Test {
|
|
public $publicProperty;
|
|
protected $protectedProperty;
|
|
private $privateProperty;
|
|
|
|
public function __construct() {
|
|
unset(
|
|
$this->publicProperty,
|
|
$this->protectedProperty,
|
|
$this->privateProperty
|
|
);
|
|
}
|
|
|
|
function __get($name) {
|
|
echo '__get ' . $name . "\n";
|
|
return $this->$name;
|
|
}
|
|
|
|
function __set($name, $value) {
|
|
echo '__set ' . $name . "\n";
|
|
$this->$name = $value;
|
|
}
|
|
|
|
function __isset($name) {
|
|
echo '__isset ' . $name . "\n";
|
|
return isset($this->$name);
|
|
}
|
|
}
|
|
|
|
$test = new Test();
|
|
|
|
$test->nonExisting;
|
|
$test->publicProperty;
|
|
$test->protectedProperty;
|
|
$test->privateProperty;
|
|
isset($test->nonExisting);
|
|
isset($test->publicProperty);
|
|
isset($test->protectedProperty);
|
|
isset($test->privateProperty);
|
|
$test->nonExisting = 'value';
|
|
$test->publicProperty = 'value';
|
|
$test->protectedProperty = 'value';
|
|
$test->privateProperty = 'value';
|
|
|
|
?>
|
|
--EXPECTF--
|
|
__get nonExisting
|
|
|
|
Notice: Undefined property: Test::$nonExisting in %s on line %d
|
|
__get publicProperty
|
|
|
|
Notice: Undefined property: Test::$publicProperty in %s on line %d
|
|
__get protectedProperty
|
|
|
|
Notice: Undefined property: Test::$protectedProperty in %s on line %d
|
|
__get privateProperty
|
|
|
|
Notice: Undefined property: Test::$privateProperty in %s on line %d
|
|
__isset nonExisting
|
|
__isset publicProperty
|
|
__isset protectedProperty
|
|
__isset privateProperty
|
|
__set nonExisting
|
|
__set publicProperty
|
|
__set protectedProperty
|
|
__set privateProperty
|