PHP常见概念混淆(五)之PHP类常量、静态属性和属性的区别

最近在看手册的时候发现PHP有好些个坑,一不注意就会掉进去,边看边将这些容易混淆的内容记载下来。

tips:看手册的时候最好中英文对照着看,因为英文手册上有好些个中文手册没有的东西(最新的PHP)

  1. PHP5.3 支持用一个变量调用类
  2. PHP5.6 支持用一个表达式赋值 PHP类常量PHP静态属性
  3. PHP7.1 支持对 PHP类常量 增加访问控制

简介

  • PHP类常量:定义方式和常量一样
  • PHP属性:定义方式和变量一样
  • PHP静态属性:可PHP属性的定义一样,加了一个static

PHP属性

  • 使用 -> 访问的变量
  • 子类可以覆盖父类的变量
  • 变量可以随时修改
  • 在类中使用 $this 访问

PHP类常量

  • 使用 :: 访问类常量,可以通过 对象 获取类常量.

      <?php
    
      class test{
          const AAAA = "BBB";
      }
    
      $test = new test;
    
      echo test::AAAA;  //BBB
      echo $test::AAAA;   //BBB
  • 子类可以覆盖父类的类常量
      <?php
    
      class test{
          const AAAA = "BBB";
      }
    
      class test2 extends test{
          const AAAA = "ccc";
    
          public function gettest(){
              return parent::AAAA;
          }
      }
      $test = new test2;
    
      echo test::AAAA;   //ccc
      echo test2::AAAA;  //ccc
      echo $test::AAAA;  //BBB
      echo $test->gettest();  //BBB
  • 类常量一旦定义了无法修改
  • 在类中使用 self::类常量 访问

PHP静态属性

  • 使用 :: 访问静态属性,可以通过 对象 获取静态属性.

     <?php
    
     class test{
         public static $AAAA = "BBB";
     }
    
     $test = new test;
    
     echo test::$AAAA;    //BBB
     echo $test::$AAAA;   //BBB
  • 子类可以覆盖父类的静态属性
      <?php
    
      class test{
          public static $AAAA = "BBB";
      }
    
      class test2 extends test{
          public static $AAAA = "CCC";
      }
      $test = new test2;
    
      echo test2::$AAAA;   //CCC
      echo $test::$AAAA;   //CCC
  • 类常量定义了可以随时进行修改
  • 再类中使用 self::$test 进行访问

原文地址:https://www.cnblogs.com/qiye5757/p/9305808.html

时间: 2024-09-29 21:44:26

PHP常见概念混淆(五)之PHP类常量、静态属性和属性的区别的相关文章

PHP常见概念混淆(七)之self、static、parent的区别

前言 首先,这个 static 符号跟 static(静态)关键字不是一个东西.这三个符号在PHP对象中共有两种用法: 在类内部,可以使用 new self. new static. new parent 创建新对象 可以使用 self::.static::.parent::调用静态变量和方法. 创建新对象 <?php class test{ public static function test_self(){ return new self(); } public static functi

C#4.0语法糖之第五篇: 匿名类 &amp; 匿名方法

今天时间有点早,所以上来在写一篇文章吧,继续上一篇的文章,在我们平时编程过程中有没有遇到过这样的一个情景,你定义的类只是用来封装一些相关的数据,但并不需要相关联的方法.事件和其他自定义的功能.同时,这个类仅仅在当前的应用程序中使用,而不需要在项目间重用.你所需要的只是一个“临时的”类型,现在我们来看看这个传统类的定义: 1 internal class oneClass 2  3 { 4  5      //定义若干私有数据成员 6  7      //通过属性来封装每个数据成员 8  9   

cocos2d-x ios游戏开发初认识(五) CCsprite精灵类

这次写一下精灵创建的几种类型: 一.通过文件创建: 在原有的基础上添加如下代码: //一.通过文件创建精灵 CCSprite *bg =CCSprite::create("map.png"); CCSize winSize  =CCDirector::sharedDirector()->getWinSize(); //得到屏幕的尺寸 bg->setPosition(ccp(winSize.width/2, winSize.height/2)); this->addCh

Python 进阶(五)定制类

__str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __str__(self): return '(Person: %s, %s)' % (self.name, self.gender) 现在,在交互式命令行下用 print 试试: >>>

第十五章 文件属性类的实现

                  第十五章    文件属性类的实现        根用户的权限也不能是无限大.必须考虑到保护用户的隐私!用户的文件内容.程序代码可设置为根用户也不能观看,只能是文件拥有者可以查看.修改.但根用户可以删除一切非根用户的文件.也可以查看用户的目录.所以,i_mode字符更改如下:      BU16 i_mode; // 描述文件的访问权限:文件的读.写.执行权限  // i_mode.15-13  ftype; 文件类型: 0-符号软连接文件, // 1-硬连接文

Swift中文教程(五)--对象和类

原文:Swift中文教程(五)--对象和类 Class 类 在Swift中可以用class关键字后跟类名创建一个类.在类里,一个属性的声明写法同一个常量或变量的声明写法一样,除非这个属性是在类的上下文里面,否则,方法和函数的写法也是这样: 1 class Shape { 2 var numberOfSides = 0 3 func simpleDescription() -> String { 4 return "A shape with \(numberOfSides) sides.&q

Python3 学习第五弹:类与面向对象

对于面向对象总是要提到,万物皆对象.好似博大精深的感觉. 接下来一起看看python的面向对象的例子 创建一个对象 class Person: type = 'person' def __init__(self, name = 'Noname'): self.name = name def hello(self): print("hello, I'm " + self.name) >>> Mike = Person('Mike') >>> Mike.

live555源码研究(五)------DynamicRTSPServer类

一.类DynamicRTSPServer作用 1,提供RTSP服务 二.类DynamicRTSPServer继承关系图 live555源码研究(五)------DynamicRTSPServer类,布布扣,bubuko.com

聊聊JVM(二)说说GC的一些常见概念

转自CSDN 上一篇总结GC的基础算法,各种GC收集器的基本原理,还是比较粗粒度的概念.这篇会整理一些GC的常见概念,理解了这些概念,相信对GC有更加深入的理解 1. 什么时候会触发Minor GC? Eden区域满了,或者新创建的对象大小 > Eden所剩空间 CMS设置了CMSScavengeBeforeRemark参数,这样在CMS的Remark之前会先做一次Minor GC来清理新生代,加速之后的Remark的速度.这样整体的stop-the world时间反而断 Full GC的时候会