PHP-作用域

1.2 作用域

1.2.1 變量作用域

1、全局變量:在函數外面

2、局部變量:在函數裡面,預設情況下,函數内部是不會去通路函數外部的變量

3、超全局變量:可以在函數内部和函數外部通路

PHP-作用域
<?php
$num=10;   
function fun() {
	echo $num;     //Notice: Undefined variable: num  
}
fun();
//函數内部預設不能通路函數外部的值
---------------------
<?php
$_POST['num']=10;   //将值付給超全局變量
function fun() {
	echo $_POST['num'];    //擷取超全局的值   10
}
fun();
----------------------------
<?php
function fun() {
	$_GET['num']=10;  //将值付給超全局變量
}
fun();
echo $_GET['num'];  //列印超全局變量的值  10
           

在函數内部通路全局變量

<?php
$num=10;  //全局變量
function fun() {
	echo $GLOBALS['num'];	//輸出全局的$num
}
fun();
           

練習:如下代碼輸出什麼

<?php
function fun() {
	$GLOBALS['num']=10;  //将值付給全局的$num
}
fun();
echo $num;   //10
           

global關鍵字

<?php
$num=10;
function fun() {
	global $num;   //将全局變量的$num的位址引入到函數内部  相當于$num=&GLOBALS['num']
	echo $num;	//10
	$num=100;
}
fun();
echo '<br>';
echo $num;    //100
-----------------------------------
<?php
$num=10;
function fun() {
	global $num;
	unset($num);  //銷毀的是引用,不是具體的值
}
fun();
echo $num;    //10  
           

小結:

1、$GLOBALS儲存的是全局變量的所有的值

<?php
$a=10;
$b=20;
function show() {
	echo '<pre>';
	var_dump($GLOBALS);   //是一個數組,儲存的是全局變量的所有的值
}
show();
           

2、global用于建立一個全局變量的引用

注意:常量沒有作用域的概念

<?php
/*
define('PI',3.14);
function fun() {
	echo PI;   //3.14
}
fun();
echo '<br>';
*/
-------------------------------------
function fun() {
	define('PI',3.14);
}
fun();
echo PI;   //3.14
           

1.2.2 靜态變量(static)

靜态變量一般指的是靜态局部變量。

靜态變量隻初始化一次

<?php
function fun() {
	$num=10;	//普通變量每調用一次初始化一次,調用完畢銷毀
	$num++;
	echo $num,'<br>';
}
fun();	//11
fun();	//11
--------------------------------
<?php
function fun() {
	static $num=10;	//靜态變量隻初始化一次,調用完畢吧不銷毀,第二次調用的時候就不再初始化
	$num++;
	echo $num,'<br>';
}
fun();	//11
fun();	//12
           

常量和靜态變量的差別

1、常量和靜态變量都是初始化一次

2、常量不能改變值,靜态變量可以改變值

3、常量沒有作用域,靜态變量有作用域

<?php
function fun1() {
	define('num',10);
}
function fun2() {
	echo num;   //10
}
fun1();
fun2();
------------------------------------------------------------
<?php
function fun1() {
	static $num=10;
}
function fun2() {
	echo $num;  //Notice: Undefined variable: num 因為靜态變量是有作用域的
}
fun1();
fun2();
           

1.2.3 匿名函數use()

預設情況下,函數内部不能通路函數外部的變量,但在匿名函數中,可以通過use将外部變量引入匿名函數中

<?php
$num=10;
$fun=function() use($num) {  //将$num引入到匿名函數中
	echo $num;	
};
$fun();   //10
           

思考:如何在函數内部通路函數外部變量

1、使用超全局變量

2、$GLOBALS

3、global

<?php
$num=10;
function test() {
	$num=20;
	$fun=function() use($num) {   //隻能引入一層
		echo $num;
	};
	$fun();
}
test();    //20
           
<?php
$num=10;
$fun=function()use(&$num){   //use可以傳位址
	$num=100;
};
$fun();
echo $num;  //100
           
thinkphp php 全局變量 靜态變量 初始化

东部新区中西医结合医院举办“强化学习 提质增效”第九次集中学习

安全在我心 防范我先行——成都东部新区中西医结合医院院办、人资、宣传科及客服中心“强化学习 提质增效”学习班组织第九次集中学习

为进一步提高驾驶人员交通安全行车意识,消除交通事故隐患,确保医院急救、行政行车安全,9月4日下午,成都东部新区中西医结合医院院办(含驾驶班)、人资科、宣传科及客户服务中心联合举办的2023年度“强化学习 提质增效”学习培训班组织第九次集中学习。

东部新区中西医结合医院举办“强化学习 提质增效”第九次集中学习

本次培训由党总支委员、副院长杨香主持,驾驶班班长余德军主讲。培训中,余班长强调夏季是交通事故高发季节,为确保夏季期间的行车安全,除严格遵守交通法规外,要注意做好夏季安全行车“六防”,即:一防疲劳驾车引发事故;二防情绪激动;三防发动机高温;四防轮胎爆裂;五防涉水行车和熄火后再点火;六防止车辆发生火灾。提醒大家守法守规、知险知责、安全驾驶。

东部新区中西医结合医院举办“强化学习 提质增效”第九次集中学习

随后,杨院长作总结讲话。她指出,各参培人员在工作生活中,要本着对自己、对单位负责的态度,提高安全意识,牢固树立“安全第一”的思想,时刻注意行车安全,严禁疲劳驾驶、酒后驾驶、超速驾驶等违法违规及危险驾驶行为。

她要求驾驶班全体成员要时刻绷紧安全这根弦,端正工作态度,服从工作安排,提高服务质量,养成良好的驾驶习惯,及时关注车辆状况,排查车辆隐患,确保车辆正常运行,更好地完成120急救任务和医院公务业务,保障患者及乘车人员的生命安全。

东部新区中西医结合医院举办“强化学习 提质增效”第九次集中学习

通过培训,提升了参培人员安全驾驶意识,增强了安全驾驶相关知识和技能,使驾驶班全体成员深入理解了安全行车的重要性,为保障患者和乘车人员生命安全奠定坚实基础。

最后,全体驾驶班成员现场签署了驾驶车辆安全承诺书。(成都东部新区中西医结合医院余德军、医师报陈远航)