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."加入了玩游戏<br/>";

}

}
$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();

静态方法的特点:

静态方法只能操作静态变量

静态方法不能操作非静态变量

普通成员方法可以操作静态变量也可以操作普通变量,但是不能访问静态方法,静态方法也不能访问静态方法

php的static关键字和全局变量,布布扣,bubuko.com

时间: 2025-01-02 15:37:08

php的static关键字和全局变量的相关文章

C++中的static关键字的总结

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变量的例子,如下: //Example 1#include <iostream.h>void fn();static int n; //定义静态全局变量void main(){ 

c++ static 关键字总结

1. 静态全局变量 在全局变量之间加上static关键字,就被定义为静态全局变量. 特点:在全局数据区分配内存 未初始化则被自动初始化为0 在声明它的文件内可见,在声明它之外的文件不可见,其他文件中可使用同名变量 2. 静态局部变量 在局部变量前加上static关键字,就被定义为静态局部变量 特点:在全局数据区分配内存,但是作用域为局部作用域 一般在声明时初始化,只能被显示初始化一次,以后调用该函数时不被初始化 若未显示初始化,初始化为0 3.静态函数 在函数返回类型前加上static关键字,就

C/C++中static关键字的用法

1.什么是static? static 是C/C++中很常用的修饰符,它被用来控制变量的存储方式和可见性. 1.1static的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义为全局的变量,但定义一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制).s

C++static关键字总结

注:本文转自vckbase,作者:韩耀旭 转自原帖地址:http://www.cnblogs.com/BeyondAnyTime/archive/2012/06/08/2542315.html 面向对象的static关键字(类中的static关键字)1.1静态数据成员在类内数据成员的声明前加上关键字static,该数据成员就是类内的静态数据成员.先举一个静态数据成员的例子. //Example 5#include <iostream.h>class Myclass{public:  Mycla

Java中static关键字用法总结

1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它们只能访问static数据. · 它们不能以任何方式引用this 或super. class Simple { static void go() { System.out.println("Welcome"); } } public class Cal { public static vo

static关键字 详解

原文地址:http://blog.csdn.net/keyeagle/article/details/6708077 google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大.所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之. C语言代码是以文件为单位来组织的,在一个源程序的所有源文件中,一个外部变量(注意不是局部变量)或者函数只能在一个源程序中定义一次,如果有

Java基础-学习笔记(九)——static关键字

1.静态成员变量 程序中的类,只是在描述其对象的属性和成员,并没有产生实际对象,只有通过new关键字才能产生出对象,这时系统才会分配内存空间给对象,其方法才能供外部调用. 每生成一个对象,都会在内存中给它分配一个单独的空间,有时候我们希望无论产生多少对象,某些某些特定的数据在内存空间里只有一份,我们只需要在这种数据面前加上statice关键字即可.静态变量在某种程度下与其他语言中的全局变量比较类似.并且,我们可以不需要产生实例对象,直接使用类名来调用,如下代码所示 1 class Chinese

关于java的static关键字

通常来说,当你创建类时,就是在描述那个类的对象的外观与行为.除非你用new创建那个类的对象,否则,你实际上并未获得任何东西.当你用new来创建对象时,数据存储空间才被分配,其方法才供外界调用. 但是有两种情形,用上述方法是无法解决的.一种情形是,你只需要为某特定数据分配一份存储空间,而不去考虑究竟要创建对少个对象,还是甚至根本就不需要创建任何对象.另一种情形是,你希望某个方法不与包含它的类的任何对象关联在一起.也就是说,即使没有创建对象,也能够调用这个方法. 通过static关键字,可以满足这两

浅谈java中的static关键字

简述:在java中我们经常使用static关键字,该关键字就相当于是全局变量(静态变量或者是类变量). (1)当在类中的方法或者是变量前加上static时,那么这个方法或者变量只有'一份',在此后的类的各种对象中也是共用一份这个static所修饰的方法或者是变量(直接通过类名访问),相比于父类中其他的非static变量或者是方法,当其对象产生时,对象中会自己备份一份非static变量或者是方法(被所有的类实例共享).所以从这个角度看,static实际上可以节约内存空间,但是会一直占用内存空间,直