WordPress

Briefly unavailable for scheduled maintenance.
Check back in a some hours.
Uname:Linux wp 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64

Base Dir : /var/www/eduesan

User : www-data


403WebShell
403Webshell
Server IP : 202.131.237.196  /  Your IP : 216.73.216.192
Web Server : nginx/1.14.0
System : Linux wp 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
User : www-data ( 33)
PHP Version : 7.2.24-0ubuntu0.18.04.17
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /www/server/php/72/src/tests/lang/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /www/server/php/72/src/tests/lang/foreachLoopObjects.003.phpt
--TEST--
Foreach loop tests - modifying the object during the loop.
--FILE--
<?php

class C {
	public $a = "Original a";
	public $b = "Original b";
	public $c = "Original c";
	protected $d = "Original d";
	private $e = "Original e";
}

echo "\nDirectly changing object values.\n";
$obj = new C;
foreach ($obj as $k=>$v) {
	$obj->$k="changed.$k";
	var_dump($v);
}
var_dump($obj);

echo "\nModifying the foreach \$value.\n";
$obj = new C;
foreach ($obj as $k=>$v) {
	$v="changed.$k";
}
var_dump($obj);


echo "\nModifying the foreach &\$value.\n";
$obj = new C;
foreach ($obj as $k=>&$v) {
	$v="changed.$k";
}
var_dump($obj);

echo "\nAdding properties to an an object.\n";
$obj = new C;
$counter=0;
foreach ($obj as $v) {
	$newPropName = "new$counter";
	$obj->$newPropName = "Added property $counter";
    if ($counter++>10) {
    	echo "Loop detected\n";
    	break;
    }
	var_dump($v);
}
var_dump($obj);

echo "\nAdding properties to an an object, using &\$value.\n";
$obj = new C;
$counter=0;
foreach ($obj as &$v) {
	$newPropName = "new$counter";
	$obj->$newPropName = "Added property $counter";
    if ($counter++>10) {
    	echo "Loop detected\n";
    	break;
    }
	var_dump($v);
}
var_dump($obj);

echo "\nRemoving properties from an object.\n";
$obj = new C;
foreach ($obj as $v) {
	unset($obj->a);
	unset($obj->b);
	unset($obj->c);
	var_dump($v);
}
var_dump($obj);

echo "\nRemoving properties from an object, using &\$value.\n";
$obj = new C;
foreach ($obj as &$v) {
	unset($obj->a);
	unset($obj->b);
	unset($obj->c);
	var_dump($v);
}
var_dump($obj);

?>
===DONE===
--EXPECTF--
Directly changing object values.
string(10) "Original a"
string(10) "Original b"
string(10) "Original c"
object(C)#%d (5) {
  ["a"]=>
  string(9) "changed.a"
  ["b"]=>
  string(9) "changed.b"
  ["c"]=>
  string(9) "changed.c"
  ["d":protected]=>
  string(10) "Original d"
  ["e":"C":private]=>
  string(10) "Original e"
}

Modifying the foreach $value.
object(C)#%d (5) {
  ["a"]=>
  string(10) "Original a"
  ["b"]=>
  string(10) "Original b"
  ["c"]=>
  string(10) "Original c"
  ["d":protected]=>
  string(10) "Original d"
  ["e":"C":private]=>
  string(10) "Original e"
}

Modifying the foreach &$value.
object(C)#%d (5) {
  ["a"]=>
  string(9) "changed.a"
  ["b"]=>
  string(9) "changed.b"
  ["c"]=>
  &string(9) "changed.c"
  ["d":protected]=>
  string(10) "Original d"
  ["e":"C":private]=>
  string(10) "Original e"
}

Adding properties to an an object.
string(10) "Original a"
string(10) "Original b"
string(10) "Original c"
string(16) "Added property 0"
string(16) "Added property 1"
string(16) "Added property 2"
string(16) "Added property 3"
string(16) "Added property 4"
string(16) "Added property 5"
string(16) "Added property 6"
string(16) "Added property 7"
Loop detected
object(C)#%d (17) {
  ["a"]=>
  string(10) "Original a"
  ["b"]=>
  string(10) "Original b"
  ["c"]=>
  string(10) "Original c"
  ["d":protected]=>
  string(10) "Original d"
  ["e":"C":private]=>
  string(10) "Original e"
  ["new0"]=>
  string(16) "Added property 0"
  ["new1"]=>
  string(16) "Added property 1"
  ["new2"]=>
  string(16) "Added property 2"
  ["new3"]=>
  string(16) "Added property 3"
  ["new4"]=>
  string(16) "Added property 4"
  ["new5"]=>
  string(16) "Added property 5"
  ["new6"]=>
  string(16) "Added property 6"
  ["new7"]=>
  string(16) "Added property 7"
  ["new8"]=>
  string(16) "Added property 8"
  ["new9"]=>
  string(16) "Added property 9"
  ["new10"]=>
  string(17) "Added property 10"
  ["new11"]=>
  string(17) "Added property 11"
}

Adding properties to an an object, using &$value.
string(10) "Original a"
string(10) "Original b"
string(10) "Original c"
string(16) "Added property 0"
string(16) "Added property 1"
string(16) "Added property 2"
string(16) "Added property 3"
string(16) "Added property 4"
string(16) "Added property 5"
string(16) "Added property 6"
string(16) "Added property 7"
Loop detected
object(C)#%d (17) {
  ["a"]=>
  string(10) "Original a"
  ["b"]=>
  string(10) "Original b"
  ["c"]=>
  string(10) "Original c"
  ["d":protected]=>
  string(10) "Original d"
  ["e":"C":private]=>
  string(10) "Original e"
  ["new0"]=>
  string(16) "Added property 0"
  ["new1"]=>
  string(16) "Added property 1"
  ["new2"]=>
  string(16) "Added property 2"
  ["new3"]=>
  string(16) "Added property 3"
  ["new4"]=>
  string(16) "Added property 4"
  ["new5"]=>
  string(16) "Added property 5"
  ["new6"]=>
  string(16) "Added property 6"
  ["new7"]=>
  string(16) "Added property 7"
  ["new8"]=>
  &string(16) "Added property 8"
  ["new9"]=>
  string(16) "Added property 9"
  ["new10"]=>
  string(17) "Added property 10"
  ["new11"]=>
  string(17) "Added property 11"
}

Removing properties from an object.
string(10) "Original a"
object(C)#%d (2) {
  ["d":protected]=>
  string(10) "Original d"
  ["e":"C":private]=>
  string(10) "Original e"
}

Removing properties from an object, using &$value.
string(10) "Original a"
object(C)#%d (2) {
  ["d":protected]=>
  string(10) "Original d"
  ["e":"C":private]=>
  string(10) "Original e"
}
===DONE===

Youez - 2016 - github.com/yon3zu
LinuXploit