http://php.net/manual/zh/language.oop5.basic.php

-> 访问类的非静态属性

可以用来访问类的非静态属性:

class SimpleClass{

    //属性由`public` `proteccted`、`private`开头,然后跟一个普通的变量声明来组成
    //为了向后兼容 PHP 4,PHP 5 声明属性依然可以直接使用关键字 var 来替代,
    //如果直接使用 var 声明属性,而没有用 public,protected 或 private 之一,PHP 5 会将其视为 public。
    public $var = 'a default value';

    //在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性。
    //静态属性则是用 ::(双冒号):self::$property 来访问。
    public function displayVar(){
        echo $this->var;
    }
}

$a = new SimpleClass();
//$a = 'SimpleClass';
//$a = new $className;
//调用属性
echo $a ->var;
//调用方法
$a -> displayVar();

::访问静态属性

class SimpleClass{
    //这是一个类常量
    const constant = 'constant value';
    //这是一个静态属性
    public static $my_static = 'foo';
    
    public function staticValue(){
        return self::$my_static;
    }
    //静态方法(类方法)
    public static function myfunc(){
        echo 'static function '.'</br>';
    }
}

echo SimpleClass::constant;
$a = new SimpleClass();
echo $a::constant;
SimpleClass::myfunc();

使用类或者实例访问都是可以的

关键字const和static的区别

参考出处: http://blog.csdn.net/u012368971/article/details/53492555

1). const只能修饰成员属性,不可以修饰方法

class Test{  
    const PATH = 'c/';//修饰常量  
    const function test(){//这种方法是错误的,const无法修饰方法  
    }  
    public function ass(){  
        echo $this::PATH.'<br />';  
        echo self::PATH.'<br />';  
    }  
} 

其中self(不加$)代表当前类名,$this代表当前对象。这样,我们就可以在类内部调用const修饰的常量了。

2). const虽然很好用,但是一经定义就无法修改值了,但是有的时候我们需要一个属于类的属性,但是又可以修改其值,比如统计此类构造了几个对象,这个时候就是使用static的时候了。

在static修饰类的成员变量的时候,它的使用方法基本与const一样,区别就在于static修饰的属性可以添加权限(7.1的php中const也可以添加,以前的不能),并且static修饰的成员变量的值是可以修改的。

但是当static修饰成员方法的时候,使用方法有一点改变,在类的内部,static修饰的方法体内部,无法访问当前类的任何普通成员变量,准确的来说是无法使用关键字$this,只可以使用当前类的静态成员变量,和类常量。