static的作用php
❶ static关键字的作用是什么
static作用:
1、修饰函数的局部变量:
特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局
2、修饰全局函数和全局变量:
特点:只能在本源文件使用
3、修饰类里面的成员变量:
特点:和1差不多,定义多个static y,但只有一个y,不进入类的大小计算,不依赖于类对象的存在而存在(可直接调用,要进行外置声明)
4、修饰类的成员函数:
特点:f():括号里无this指针,只能调用他的本类静态函数和他的静态变量,即是用static修饰过的不依赖于类对象的存在而存在(可不进行外置声明,直接调用)
(1)static的作用php扩展阅读:
static的主要使用情况:
1、static方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。
2、static变量
static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。
而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。
3、static代码块
static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。
在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。
❷ PHP 中的 new static 有何作用,如何理解
new关键字是用于实例化一个类
语法为 $class = new ClassName();
static关键字是用于定义类中静态的属性或方法,静态属性或方法可以不需要实例化就可以直接使用,例如:
<?php
class test
{
static function show(){
echo 'hello world';
}
}
//可以直接使用,不需要实例化
test::show();
//输出hello world
?>
❸ php static 方法有什么好处
静态方法不需要所在类被实例化就可以直接使用。
静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。
❹ php 类中的static有什么作用
new关键字是用于实例化一个类
语法为
$class
=
new
classname();
static关键字是用于定义类中静态的属性或方法,静态属性或方法可以不需要实例化就可以直接使用,例如:
?php
class
test
{
static
function
show(){
echo
'hello
world';
}
}
//可以直接使用,不需要实例化
test::show();
//输出hello
world
?
❺ php static 是什么意思
static是PHP内置关键词;意为静态的意思;该关键词可以修饰类中变量或者方法;示例如下:
<?php
classBai{
publicstatic$name="";
publicstaticfunctionask(){
echo"hello,welcometo!".self::$name;
}
}
//测试
Bai::ask();
//hello,welcometo!
❻ php的静态变量究竟有什么作用
一、静态变量具有这样的特性:
当在某函数里定义一个静态变量后,这个变量不会即使函数退出了,在下次调用这个函数时,它会使用前次被调用后留下的值。
此外,虽然该变量不随函数的退出而继续存在,但函数的外部并不能使用它。
因此,静态变量的应用时机如下:
当多次调用一个函数,且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。
虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。
以下是某应用中的示例代码:
<?PHP
functionTest()
{
static$count=0;
$count++;
echo$count;
if($count<10){
Test();
}
$count--;
}
?>
二、对于类中定义的静态变量来说,简单点说,类的静态成员可以不用实例化而直接使用。
❼ 说说php面向对象编程时static,public,private,protected 各有什么意义
staticpublic与publicstatic是等价的,这两者只是两个修饰符的顺序不同。根据oracle.com教材中第八章的描述,如果两个或两个以上的(不同的)字段修饰符出现在字段声明,它们出现的顺序需与FieldModifier一致,这只是习惯,但不是必需的。部分修饰符说明:public是访问权限修饰符,用于控制外界对类内部成员的访问,声明为public的对象成员是完全共有的,外界可以随意访问,除此之外还有private,protected和默认。static控制类成员变化的修饰符。static是静态成员修饰符,其修饰的静态变量脱离具体对象独立存在,在内存中之后一份拷贝,所有的对象都公用这一个存储空间,所以对static修饰的静态变量进行的修改对该类的所有对象都起作用。static修饰的静态函数代表所有对象的统一操作,只能调用静态变量。static是针对面向对象中的“多态”而提出来的,static修饰的静态成员不存在多态性。附:FieldModifier顺序
❽ php中static 静态变量和普通变量的区别
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。 从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。 static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
❾ php中static 静态变量和普通变量的区别
php中static 静态变量和普通变量的区别:
在变量的前面加上static 就构成了静态变量(static 变量)。
static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
❿ static关键字的作用
static关键字主要有两种作用:
第一,为特定数据类型或对象分配单一的存贮空间,而与创建对象的个数无关。第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,
在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。具体而言,static在java中主要有四种使用情况:成员变量、成员方法、代码块及内部类。
(1)static成员变量
虽然java语言中没有全局的概念,但可以通过static关键字来达到全局的效果。java类提供了两种类型的变量:用static关键字修饰的静态变量和没有static关键字修饰的实例变量。静态变量
属于类,在内存中只有一个副本(所有实例都指向同一个内存地址)。只要静态变量所在的类被加载,这个静态类就会被分配空间,因此就可以被使用。对静态变量的引用有两种方式,分别为“类.静态变量”和“对象.静态变量”。
实例变量属于对象,只有对象被创建后,实例变量才会被分配空间,才能被使用,他在内存中存在多个副本,只能用“对象.静态变量”的方式来引用。
静态变量只有一个,被类所拥有,所有的对象都共享这个静态变量,而实例对象与具体对象有关。
(2) static成员方法
与变量类似,java类同时也提供了static方法与非static方法。static方法是类的方法,不需要创建对象就可以被使用,而非static方法是对象的方法,只有对象被创建出来后才可以被使用。
static 方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和成员方法,因为当static方法被调用的时候,这个类的对象可能还没有被创建,即使已经被创建,
也无法确定调用哪个对象的方法。同理static方法也不能访问非static类型的变量。
static的一个很重要的的用途的是实现单例模式。单例模式的特点是该类只能有一个实例,为了实现这功能,必须隐藏类的构造方法,即把构造方法声明为private,并提供一个创建对象的方法。由于构造方法被声明为private,外界无法直接创建这个类型对象,只能通过该类提供的方法来获取类的对象