static修饰的类属性

我看书上说:static成员总是唯一存在的,并且在多个对象之间互享。

因此想到,如果我在a.php中实例化了Person.class.php这个类,并给static $name赋值,那么在b.php中再次实例化这个类,b中能不能读取name属性的新值呢?

代码如下:

Person.class.php

<span style="font-size:14px;"><?php
    class person{
        public static $name;

        function __construct($name='vv'){
            //self::$name = $name;
        }

        function getName(){
            return self::$name;
        }
    }
?></span>

a.php

<span style="font-size:14px;"><?php
    include 'Person.class.php';

    $ren = new Person();
    Person::$name = 'aa';
    echo $ren -> getName(); //aa

    $ren2 = new Person();
    echo $ren2 -> getName(); //aa

?></span>

b.php

<span style="font-size:14px;"><?php
    include 'Person.class.php';

    $ren3 = new Person();
    echo $ren3 -> getName(); //null
?></span>

事实证明:static成员只能在“同一脚本”的多个对象之间互享,b.php并不能读取a.php设置的属性值,后来想到这也理所当然,因为php可以同时开启多个进程来执行脚本,而且当执行完一个脚本后会自动释放内存,因此b.php无法读取a.php设置的属性!

static完整使用说明:见《细说php》第284页。

static修饰的类属性

时间: 2024-08-15 17:26:13

static修饰的类属性的相关文章

final修饰的类,其属性和方法默认是被final修饰的吗?

在论坛上,看到一个问题,当然,各位聪明的客官想必已经知道问题是什么了,嘿嘿,没错就是文章的标题:final修饰的类,其属性和方法默认是被final修饰的吗? 老实说,刚开始看到这个问题的时候,有点懵...(现场捕获懵比一只:),嘻嘻),之前学习的语法什么的,隔了太久忘记了...既然忘记了,就写个程序进行测试下吧 嘻嘻,以下是测试的程序:(小程序中用到了反射机制,还没学习到的客官,可以先去了解下哈:) ) /** * DateAndTime: 2016-12-13下午10:38:08 */ pac

static修饰

1.static修饰的资源属于类级别的资源,静态的资源,对于类所有实列共享的资源 2.static关键字可以用来修饰属性.方法.代码块.内部类 a.static修饰属性: static修饰的属性属于对类所有实列共享的资源 访问静态的属性:类名.属性名(): b.static丝素方法: static修饰的方法属于静态方法,可以直接类名.方法名()进行调用,一般是把静态方法作为 工具方法静态方法中不能调用对象的资源(对象.属性.对象方法) c.static修饰代码块 在类加载的时候执行,因为类只加载

5.Swift枚举|结构体|类|属性|方法|下标脚本|继承

1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum  Celebrity{  case DongXie,XiDu,Nandi,BeiGai }  // 从左到右对应0,1,2,3 enum CompassPoint { case North case South case East case West //enum中可以定义方法 func show(){ print(self) } } //定义enum 变量 var p = CompassPoint.Nor

static修饰符与final修饰符

■ static修饰符与final修饰符: ★ static修饰符: 1. 修饰的对象: 类中的成员(属性[静态变量或类变量]和方法[静态方法或类方法]) 2. 静态属性的特点: 1. 静态变量被所有对象共享 2. 随着类的加载而加载,随着类的消失而消失,和对象的创建无关 3. 可以直接被类名调用 3. 静态方法的特点: 1. 静态方法优先于对象存在,在静态方法中无法访问与对象相关的实例变量(这时候对象还没有创建,其属性也就没有) 2. 静态方法无法访问实例变量 3. 静态方法可以访问静态变量

Java学习(八):Java修饰符(类、变量、方法)

java中的修饰符分为类修饰符,变量修饰符,方法修饰符. 类修饰符: 1.public : public 即公共类. 2.package : 默认缺省为包修饰符,本包可见. 3.abstract :凡是用 abstract 修饰符修饰的类,被称为抽象类.含有一个或者多个抽象方法的类必须声明为抽象类,抽象类无法实例化. 4.final :当一个类不可能有子类时可用修饰符 final 把它说明为最终类. 变量修饰符: 1.public :用 public 修饰的变量可以被所有其它类所引用. 2.pr

Java static 修饰函数

package com.fish.object; /* static(静态.修饰符) static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据. 静态成员变量的访问方式: 方式一: 使用对象进行访问.  对象.属性名 方式二:可以使用类名进行访问. 类名.属性名 注意: 1. 非静态成员变量不能类名直接访问,只能使用对象进行访问. 2. 千万不要为了方便访问成员变量而使用static修饰,一定要是该数据是共享数据 时才使用static修饰. static修饰

java final .static修饰符

static静态修饰符(使用static修饰符修饰的成员变量.常量.和成员方法成为静态变量.常量和方法,他们统称为静态成员,归整个类所有,不依赖于类的特定实例,被类的所有实例共享,只要这个类被加载,JVM就可以根据类名在运行时数据区的方法区找到他们) 静态变量 对于静态变量,运行时,JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配.在类的内部,可以在任何方法内直接访问静态变量:在其他类中,可以通过类名访问该类中的静态变量. 静态变量可以被类的所有实例共享,因此静态变量可以作

java中什么时候该用static修饰方法?有什么好处或者坏处?

当一个方法或者变量需要初始化加载,或者是经常被调用的时候可以加上static.用static修饰的方法可以用类名直接调用,不用的一定要先实例化一个对象然后才可以调用比如 person这个类里面有一个方法public static add(){}那么可以直接用person类调用 person.add();当然也可以用下面的方法先出一个对象在调用也是可以如果这个方法前面没有static 比如 public add(){}那么先要person p=new person();然后用p.add();类加载

java个人学习笔记:类属性,类方法

类属性作为该类各个对象之间共享的变量.在设计阶段,分析哪些类属性不因对象的不同而改变,将这些属性设置为类属性.相应的方法设置为类方法. 如果方法和调用者无关,这样的方法通常被称为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用.   static关键字 在java类中,可用static修饰属性,方法,代码块,内部类 被修饰后成员具备以下特点: 随着类加载而加载 优先于对象存在 修饰的成员,被所有对象所共享 访问权限允许时,可不创建对象,直接被类调用   类方法 可以用类名.方法名