php 全局 静态变量,php的static关键字和全局变量
1.全局变量[其不属于面向对象的思想,因为其放在对象之外的],面向对象有一个特点,其实封装的,php希望其所有的成员都应该放在类中;php的面向对象是基于面向对象的,不是纯粹面向对象的;也就是其可以面向对象编程,也可以不面向对象编程。
使用global定义全局变量,其放在内存的全局区/静态区中,在代码中其是放在class外面的。
global $global_a;
$global_a=8;//只能这样给全局变量赋值,否则会报错
//在函数中使用全局变量
function test(){
global $global_a;//global才能得到$a的地址
$global_a=90;//找到外层的$a的地址位置并将其值改成90
}
test();
echo $global_a;//输出90,如果函数中在使用全局变量时没有使用global关键字的话,输出的值是8
2.static关键字的理解
注意:
a.要在类中定义static变量
b.使用static变量可以在类中也可以在类外使用(静态对象不会依赖于对象的创建而创建,也就是说在访问static变量时,不用去创建对象就可以直接方法:
class Person{
public static $a=90;
public function __construct(){
echo "你好";
}
}
echo Person::$a;
//没有new
Person();但是还是可以得到$a等于90。在php中new关键字才会调用__construct方法,如果没有new就不会调用该方法;因此在这里“你好”不会输出
)
class Child{
public $name;
public static
$num=0;//定义static属性
function __construct($cname){
$this->name=$cname;
}
public function play_game(){
//使用static属性,在类中,1.self::$类变量名
2. 类名::$类变量名(在类外部才用第二种方式使用)
self::$num+=1;//在类中使用static变量
echo
$this->name."加入了玩游戏
";
}
}
$child1=new Child(‘倪华‘);
$child1->play_game();
$child2=new
Child(‘万鑫‘);
$child2->play_game();
$child3=new
Child(‘盛盛‘);
$child3->play_game();
echo Child::$num;//在类外使用static属性
3.static方法(静态方法,注意:在类方法中不能使用非静态属性[变量],在使用静态变量时往往采用静态方法)
静态方法也叫类方法,静态方法是属于所有对象的实例的,其定义形式为:[修饰符] static function
方法名(){}
在类中使用类方法:self::类方法名
或者 类名::类方法名
在类的外部使用:类名::类方法名
或者 对象名->类方法名
class Student{
public $name;
public static $fee;
function
__construct($name){
$this->name=$name;
}
public static function enter_school($fee){
self::$fee+=$fee;
}
static function getFee(){
return self::$fee;
}
}
$stu=new Student("张三");
Student::enter_school(200);
$stu=new
Student("张三333");
$stu->enter_school(300);
echo
"总费用是".$stu->getFee();
静态方法的特点:
静态方法只能操作静态变量
静态方法不能操作非静态变量
普通成员方法可以操作静态变量也可以操作普通变量,但是不能访问静态方法,静态方法也不能访问静态方法
原文:http://www.cnblogs.com/tangyue/p/3745251.html
php 全局 静态变量,php的static关键字和全局变量相关推荐
- 【C语言】局部变量、全局变量,局部静态变量,全局静态变量,extern,static的区别...
局部变量: 创建在栈区(向下生长),生命周期存在于当前作用域中. 创建时若未初始化,则为随机值. 全局变量: 创建在static区,生命周期一直存在. 创建时若未初始化,则为0. 静态局部变量 ...
- php中如何声明静态属性,PHP使用static关键字声明静态属性和静态方法
PHP使用static关键字声明静态属性和静态方法 在PHP中,通过static关键字修饰的成员属性和成员方法被称为静态属性和静态方法. 静态属性和静态方法不需要在被类实例化的情况下就可以直接使用. ...
- 全局变量和全局静态变量
主要区别就是作用域:全局变量定义的变量可以被其他文件所看见(即可以被其他文件extern),全局静态变量的作用范围只限于本文件中. 关于在头文件中定义:在#include之后会在cpp文件中展开,相当 ...
- wpf绑定全局静态变量并且实现变更通知(mvvm)
在实际的开发中,有一些集合或者属性可能是全局的,比如当你做一个oa的时候,可能需要展示所有的人员,这时这个所有的人员列表显然可以作为全局参数,比如这里有一个全局的静态属性UserList.而你在使用m ...
- 【转载】wpf绑定全局静态变量并且实现变更通知(mvvm)
这篇看了之后,很有启发,也很有用!,分享给大家 以下是转载内容. ---------------- 版权声明:本文为CSDN博主「returnTrue999」的原创文章,遵循CC 4.0 BY-SA版 ...
- php的 静态变量,PHP之static静态变量详解
在看别人项目过程中,看到函数里面很多static修饰的变量,关于static修饰的变量,作用域,用法越看越困惑,所以查了下资料. static用法如下: 1.static 放在函数内部修饰变量 2.s ...
- 【原创】 关于全局静态变量初始化
今天碰到个问题,直接上代码: Class Program{private static string _str= "StringValue";private static Uri ...
- 局部静态变量和全局静态变量
静态变量的类型说明符是static. 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能 ...
- java静态函数_(基础)java中的静态变量与静态函数Static
静态static 静态出现最大的原因:节约内存,只存一份,由对象共享这个属性. 静态的作用是什么? 场景: 当每个对象都有一个相同的属性,如country="China",那么每个 ...
最新文章
- C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
- Nature: 人的肠道古细菌基因组集
- The Swift Code之UITextField的使用,及事件委托
- 哎!马上要涉水了,装修的水!
- 阻塞非阻塞和同步异步
- centos who命令 查看当前登录系统用户信息
- Istio 网关之南北向流量管理
- 【图说Word】怎么在word的每一行前面和后面加上同一个字或字符?
- 杭电5620 KK's Steel
- Centos源码安装Python3
- 神经网络测试集loss不变_神经网络训练过程中不收敛或者训练失败的原因
- 《Oracle SQL疑难解析》——1.10 删除表中的所有行
- docker入门、docker基本命令
- DSB matlab仿真
- python绝技运用python成为顶级pdf_python绝技:运用python成为顶级黑客 中文pdf完整版[42MB]...
- css文字和数字或者英文对不齐解决方案
- 【neutron源码分析】neutron-server启动流程分析
- uestc oj 1831 论程序的阿卡林化
- do while循环语句的学习以及练习
- java创建byte数组_java.创建一个byte数组,long length = file.length(); byte[] bytes =