Home  >  Article  >  Backend Development  >  What to do if global php doesn't work

What to do if global php doesn't work

藏色散人
藏色散人Original
2021-03-10 10:14:111553browse

Solutions for php global not working: 1. Reduce multi-level include calls, and try not to use include within functions; 2. Change "$site_name" to a global variable in the corresponding page statement.

What to do if global php doesn't work

The operating environment of this article: Windows 7 system, PHP8, Dell G3 computer.

php global variable is invalid?

For PHP beginners, when using the global keyword, you may find that a variable outside the function global is In some cases, the variable cannot be output correctly (that is, the global variable is invalid). Let's look at a simple and common example.

Here, we have two pages a.php and b.php.

b.php page code is as follows:

 <?php
 $site_name = &#39;CodePlayer&#39;;
 function sayHi(){
     global $site_name;    
     echo "Hello! Welcome to $site_name !";
 }
 ?>

a.php page code is as follows:

 <?php
 function include_view_page(){
     include &#39;b.php&#39;;    
     sayHi();                    
}
include_view_page();
?>

The above example is very Simple, we hope that when we visit the a.php page, the welcome statement can be displayed correctly. However, unfortunately, when we use the browser to access the a.php page, we find that the output is as follows:

Hello! Welcome to !

In other words, we are in the function include_view_page()## When calling the sayHi() function in #, the $site_name in the sayHi() function of the b.php page is not correctly Recognize and take effect. What exactly is this matter about?

实际上,当我们在函数include_view_page()include b.php页面时,b.php页面的变量$site_name就相当于存放在include_view_page()函数内的作用域中。众所周知,在函数内global一个变量实际上是在函数内建立一个对页面全局变量的引用。而在我们的例子中,这个$site_name变量对于a.php而言,它只是include_view_page()函数内的局部变量,因此无法global该变量,我们进行相关调用时自然无法获取到正确的变量和变量值。

在php中,我们尤其需要注意类似上述在函数内include某个页面,导致该页面中变量的作用域发生改变的问题。为了避免这种情况,我们应该尽量减少多层次的include调用,也尽量不要在函数内使用include。此外,我们还可以在b.php的页面中将$site_name进行全局变量形式的声明。

//b.php
<?php
global $site_name;
$site_name = &#39;CodePlayer&#39;;

function sayHi(){
    global $site_name;
    echo "Hello! Welcome to $site_name !";
}
?>

【推荐学习:《PHP视频教程》】

The above is the detailed content of What to do if global php doesn't work. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn