导航:首页 > 编程语言 > php静态类定义

php静态类定义

发布时间:2022-12-22 22:20:48

php 类中的static有什么作用

static 是C中很常用的修饰符,它被用来控制变量的存储方式和可见性
static 声明的变量在C语言中有两方面的特征:

1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。

2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

2、问题:Static的理解

关于static变量,请选择下面所有说法正确的内容:

A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;

D、静态全局变量过大,可那会导致堆栈溢出。

答案与分析:

对于A,B:根据本篇概述部分的说明b),我们知道,A,B都是正确的。

对于C:根据本篇概述部分的说明a),我们知道,C是正确的(所谓的函数重入问题,下面会详细阐述)。

对于D:静态变量放在程序的全局数据区,而不是在堆栈中分配,所以不可能导致堆栈溢出,D是错误的。

因此,答案是A、B、C。

3、问题:不可重入函数

曾经设计过如下一个函数,在代码检视的时候被提醒有bug,因为这个函数是不可重入的,为什么?

unsigned int sum_int( unsigned int base )
{
unsigned int index;
static unsigned int sum = 0; // 注意,是static类型的。
for (index = 1; index <= base; index++)
{
sum += index;
}
return sum;
}

答案与分析:

所谓的函数是可重入的(也可以说是可预测的),即:只要输入数据相同就应产生相同的输出。

这个函数之所以是不可预测的,就是因为函数中使用了static变量,因为static变量的特征,这样的函数被称为:带“内部存储器”功能的的函数。因此如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量,这种函数中的static变量,使用原则是,能不用尽量不用。

将上面的函数修改为可重入的函数很简单,只要将声明sum变量中的static关键字去掉,变量sum即变为一个auto 类型的变量,函数即变为一个可重入的函数。

当然,有些时候,在函数中是必须要使用static变量的,比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

⑵ php静态属性跟常量有什么区别啊

类的静态属性. 会在类文件加载的时候, 就初始化.
属性值是可以更改的.
常量...一旦定义了. 就无法变更值..
这应该算是最大区别.

另外, 常量只能是简单的数据类型(如: int , string , boolean,float , double) ,
类的静态属性, 可以是php所支持的任意变量类型(但初始化的时候. 只能是简单数据类型, 数组)

⑶ PHP类的静态(static)方法和静态(static)变量使用介绍

在php中,访问类的方法/变量有两种方法:
1.
创建对象$object
=
new
Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。
2.
直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
A.
如果是变量,需要该变量可访问。
B.
如果是方法,除了该方法可访问外,还需要满足:
b1)
如果是静态方法,没有特殊条件;
b2)
如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。
然后我们再看一下使用$object->…
和使用class::…
都有什么区别:
1.
使用$object->…
,需要执行构造函数创建对象;
2.
使用class::…
调用静态方法/变量,不需要执行构造函数创建对象;
3.
使用class::…
调用非静态方法/变量,也不需要执行构造函数创建对象。
然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
差异还是显然存在的,如下:
1.
静态变量
静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。
2.
静态方法
静态方法可以直接使用class::…
来调用,而非静态方法需要满足一定限制条件才能使用class::..
的方法调用,如之前所述

⑷ php 中class static public var 都定义什么什么

static 一旦声明为静态变量,在编译时刻开始永远存在,不受作用域范围约束,而且展一定内存

public 公共的谁都可以调用。
var 跟public 一样。var是老版本php的写法。
<?php
class a{
var $abc="ABC";
}
$b=new a;
$c=$b;
echo $b->abc;//这里输出ABC
echo $c->abc;//这里输出ABC $b->abc="DEF";
echo $c->abc;//这里输出DEF
?>

这个就是php $b引用类a的方法的变量。
引用方法是 类名:: 方法名。好了200分拿出来吧

⑸ PHP中this,self和static的区别

  1. PHP支持类和面向对象结构,PHP的类的静态函数和变量不与任何特定类的实例相关联(换句话说,一个对象)。

  2. 相反,静态函数和变量与类定义本身相关联。换言之,一个类的所有实例都共享相同的静态变量。在一个类的方法(函数)的上下文中,静态变量和函数被访问使用self::,在一个类的对象(实例)的上下文中使用其他方法和变量时用this。

  3. 静态函数只能使用静态变量,静态函数和变量的引用是通过 self::函数名() 和 self::变量名。上述实例中,静态变量的引用是由类名(exampleClass::$foo),或者self::(self::$foo),当在这个类的静态方法[称为 静态函数()]里使用时。类的正则函数和变量需要一个对象上下文来引用,他们不能脱离对象上下文而存在。对象上下文由$this提供。在上述函数中,$bar 是一个正则变量,所以它被 $obj->bar(上下文使用变量obj) 来引用,或者使用 $this->bar(再次在一个对象的方法里在一个对象上下文中) 来引用。

  4. self 不使用前面的 $,因为 self 不意味着是一个变量而是类结构本身。而 $this 引用一个特定的变量,所以有前面的 $ 。

⑹ php静态属性和常量的区别,求教

接口:

1 不能够定义静态变量在类的 成员变量(常量除外)

2 定义的常量 const YOUCONST = VALUE,不能在子类中覆盖,在子类中以 interfaceName::YOUCONST的方式调用

3 不能使用parent::YOUCONST的方式调用接口的常量

类:

1 const 变量可以使用parent::YOUCONST的方式,className::YOUCONST的方式在子类中访问

2 const定义的变量,在子类中可以被覆盖

3 当然在类中可以定义静态成员变量了

⑺ php类中有静态方法和非静态的,我想问的是,什么时候用静态方法,静态方法和普通方法有什么不同

php类中的静态方法和非静态方法,跟一般我们所说OOP编程中的用法不尽相同,有些特性是不完善的,但你可以当它们是正规OOP的类来使用。

⑻ php 在类中怎么定义静态变量

<?php

class testClass

{
static $staticvar='hello php';
function getValue(){
return self::$staticvar;
}
}

⑼ PHP中的静态类是怎么实现的啊

首先:类不可以标注static,也就是说没有“静态类“!

所谓"静态类"指的是:类中含有静态的成员、方法是用static标注的。写法例如:

<?php
classMath
{
publicstaticfunctionceil($value)
{
returnceil($value);
}
publicstaticfunctionfloor($value)
{
returnfloor($value);
}
}
?>


另外类种的静态方法无需实例化成对象即可使用哦,实例化会报错哦;

⑽ php的静态变量究竟有什么作用

一、静态变量具有这样的特性:


当在某函数里定义一个静态变量后,这个变量不会即使函数退出了,在下次调用这个函数时,它会使用前次被调用后留下的值。


此外,虽然该变量不随函数的退出而继续存在,但函数的外部并不能使用它。


因此,静态变量的应用时机如下:


当多次调用一个函数,且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。


虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。


以下是某应用中的示例代码:

<?PHP
functionTest()
{
static$count=0;
$count++;
echo$count;
if($count<10){
Test();
}
$count--;
}
?>


二、对于类中定义的静态变量来说,简单点说,类的静态成员可以不用实例化而直接使用。

阅读全文

与php静态类定义相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:485
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163