Does WordPress Control Global Variables in a Different Way?
Today I have found a new unusual problem of
PHP global variables in
WordPress. ( It may be my problem). I was trying to change the wp global variable $current_user in a user define function by calling global keyword. My code was
<?php
function add_some_user_info()
{
global $current_user; #Global Variable Generated By WP Core
$current_user->new_info="My New Value"; # Remember this line
}
add_some_user_info();
echo "<pre>";print_r($current_user);echo "</pre>";
?>
Output: Showing
WP current user object with my additional Value.
When I use $current_user="Test Value"; Output: Test Value
When I use $current_user=false or null or 0; Output should be blank but it is showing WP current user object without no change. That means I can not change $current_user object to delete, null, false or zero but can change with some string.
How it works?
Then I guessed that $current_user variable may be protected by a different way.(
What is the technique?)
I tested the following codes to identify the
PHP Global variable rule.
<?php
$test="<br>First Value<br>";
function test_function()
{
global $test;
echo $test;
$test="<br>Second Value Changed by Function<br>";
}
test_function();
echo "<pre>";print_r($test);echo "</pre>";
?>
I wrote the above code in a
normal.php file and run it.
Output:
First Value
Second Value Changed by Function
---------------------
Then I wrote the same code beginning of a
WordPress theme file
header.php and run it.
Output:
First Value
--------------
Why these different output in
normal.php file and
wordPress header.php file ?
If anybody confused about my words test my codes in a simple file and a
WP theme file.
Have You Any Correct Explanation About This Problem?