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,只可以使用当前类的静态成员变量,和类常量。