自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

概論為什么PHP全局變量不能生效

開發(fā) 后端
我們應(yīng)當(dāng)通過盡量減少多級和函數(shù)中include文件來防范PHP全局變量不能生效這一問題。實(shí)在不行,我們就盡量不用全局變量。

對于一個(gè)新手在實(shí)際操作PHP語言定義一個(gè)全局變量的時(shí)候,往往會(huì)出現(xiàn)很多問題。比如,他們會(huì)一直以為,全局變量(使用global聲明)是在程序的所有地方都可以用的(不然怎么能叫全局?呵)。#t#

但在實(shí)際操作時(shí),會(huì)接連碰到幾次全局變量無效的郁悶的事,下面就重點(diǎn)看一下PHP全局變量不能生效的原因及解決辦法。

1.PHP全局變量不能生效錯(cuò)誤重現(xiàn)

問題出現(xiàn)在用我的簡易框架時(shí),在view中使用原來第三方定義好的函數(shù)時(shí)(此函數(shù)比較獨(dú)立),下面模擬一下:

t1.php

  1. < ?  
  2. run(); //執(zhí)行  
  3. function run(){  
  4. include 'func.php';  
  5. showGlobal();  
  6. }  
  7. ?> 

 

func.php1

  1. < ?  
  2. $vars = 'I am global!';  
  3. function showGlobal(){  
  4. global $vars;  
  5. print('我使用全局變量:'.$vars);  
  6. }  
  7. ?> 

 

很簡單的兩個(gè)文件(第一次發(fā)現(xiàn)問題時(shí),遠(yuǎn)比這復(fù)雜,在一層層排錯(cuò)后,得出最少化的問題重現(xiàn)環(huán)境),func.php是定義好的第三方函數(shù),該函數(shù)使用了一些全局變量,如果這時(shí)把這兩個(gè)文件放在一起,執(zhí)行一下t1.php,會(huì)發(fā)現(xiàn)showGlobal里的$vars是顯示不出來的,global失效了?

2.PHP全局變量不能生效錯(cuò)誤原因

搜索后發(fā)現(xiàn),php.net上很早就有人提出過,也有人給出了解釋:
原來,在t1.php的run函數(shù)中include func.php時(shí),func.php中的變量$vars的作用域只是在run之內(nèi),而在showGlobal中使用global聲明的$vars是要求屬于t1.php的不是run函數(shù)的,所以為空)

3.PHP全局變量不能生效解決方法

知道原因后,解決就很簡單,可以把include 從run中移出來,這樣,func.php中的$vars就屬于t1.php了;也可以在run里用global聲明一下$vars,這樣也可以把原來屬于run的$vars聲明為全局(屬于t1.php);

雖然問題可以簡決,但用起來還是很不爽, 因?yàn)樵谖业膒hpec框架中,include的情況比較普遍,不可能把view中按需include的移到外層去,使用global的話,我在使用第三方函數(shù)時(shí),又不會(huì)也不想去了解它用了什么全局變量,而且,層次結(jié)構(gòu)一多,就….

PHP全局變量不能生效的原因總結(jié):

1)盡量減少多級和函數(shù)中include文件.

2)盡量不用全局變量

責(zé)任編輯:曹凱 來源: etang.info
相關(guān)推薦

2009-12-09 17:07:08

PHP unset全局

2009-12-04 13:14:19

PHP Global變

2014-06-23 10:25:12

2013-07-17 16:16:06

Android全局變量定義全局變量Application

2010-11-12 10:08:55

SQL Server全

2013-07-25 15:15:26

iOS開發(fā)學(xué)習(xí)iOS全局變量

2013-07-22 14:07:47

2010-03-09 14:12:55

Python全局變量

2010-02-01 14:28:37

Python全局變量

2009-09-24 09:28:00

Scala講座全局變量scala

2009-11-06 13:28:19

Javascript框

2024-05-29 08:49:22

Python全局變量局部變量

2015-01-07 14:41:32

Android全局變量局部變量

2021-02-26 13:42:01

函數(shù)全局變量

2017-02-08 12:28:37

Android變量總結(jié)

2011-08-23 13:54:10

LUA全局變量

2010-09-08 17:25:17

SQL全局變量

2022-11-28 11:15:20

Tomcat回顯方式

2023-09-24 23:40:54

Python變量

2024-05-27 09:18:18

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號