您好!欢迎访问95网站大全,本站是一个免费收录网站的网址导航/网站大全/网站导航网!
当前位置:95网站大全 » 文章资讯 » 源码下载 » 文章详细

程序员必知的php静态属性跟常量

发布时间:2018-12-10 来源:网络转载 浏览:2955次
程序员必知的php静态属性跟常量图片

  【程序员必知的php静态属性跟常量】一般说道静态属性是指类的静态成员属性,用static修饰,虽然名义上是静态的,但是在类中仍然是可以通过成员方法更改它的值。

  类中的成员方法通过self::访问静态属性,而不是通过$this->

  静态常量,一般用const修饰,定义的可以不用写$符号,且类中方法不可更改它的值,const关键字在比较低的php版本(小于等于php5.2)上不能使用。

  关于在PHP语言中使用常量和静态变量/属性,众所周知在PHP中定义常量可以使用define和const两种方式,它两者最大的区别就是后者会在代码运行之前就会定义好常量,而前者只有在代码运行时才定义常量,至于静态变量使用static关键字定义。

  在实际开发过程中,今天有人问我一个关于static的问题,顺便就写个小短文分享给大家。首先看下面这段代码:

  搞不清楚为什么可以static::AA这种写法,当然这里换成self也是可以的,我本人比较喜欢使用self。在class中明明申请的是一个常量AA又不是静态属性,凭什么可以使用static获取。关于这个问题需要追溯到php内存管理中来看,在内存管理中有一块区域叫做静态常量区,而静态常量区中放的数据都是全局加载数据,这些数据其中就包括静态值、常量值。

  而我们通常获取静态属性时使用static::属性名获取,那么常量和静态属性是存在一个地方,自然也可以通过这种方式获取,博主本人也说不准这算不算bug,总之能行的通。对PHP内存存储有兴趣,可以看PHP内存中的分配这篇文章。

  类的静态属性,会在类文件加载的时候,就初始化。

  属性值是可以更改的.

  常量...一旦定义了,就无法变更值。

  这应该算是最大区别.

  另外, 常量只能是简单的数据类型(如: int , string , boolean,float , double) 。

  类的静态属性,可以是php所支持的任意变量类型(但初始化的时候,只能是简单数据类型与数组。

  声明类成员或方法为static,就可以不实例化类而直接访问。不能通过一个对象来访问其中的静态成员(静态方法除外)。

  由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。

  静态属性不可以由对象通过->操作符来访问。

  用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。

  就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。

┃ 推荐站点

  • 电影网站导航电影网站导航

    电影网站导航是一个汇集全网优质电影网址及资源的上网导航。精心收录在线电影网站、电影周边网站和电影资讯网站,为影迷在线免费观看电影下载和手机下载电影提供便利。

    2021-09-15
  • dd网站目录网dd网站目录网

    dd网站目录网是一个全人工编辑的开放式网站分类目录,汇聚国内外优秀的网站网址,努力打造互动新颖的网站收录平台。免费提供分类目录提交,网站目录提交、中文网址目录收录、网站导航等优质功能。

    2021-09-15
  • 95网站目录网95网站目录网

    95网站目录网是一个专注于新网站推广的网站目录网,汇集免费网站目录、分类目录网、搜索引擎提交入口等,致力于为网站推广人员提供高品质外链建设及网站外推服务。

    2021-04-20