static成员能够限制外部的访问,因为static的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护;

静态方法中访其它静态成员我们使用的是一个特殊的类”self”; self和$this相似,只不过self是代表这个静态方法所在的类。

示例代码:

class Person
{
//下面是人的静态成员属性
public static $myCountry="中国";
//这是人的静态成员方法, 通过self访问其它静态成员
public static function say()
{
echo "我是".self::$myCountry;
}
}
//访问静态方法
Person::say();

在非静态方法里可不可以访问静态成员呢,当然也是可以的了,但是也不能使用”$this”引用,也要使用类名或是”self::成员属性的形式”。

const是一个定义常量的关键字,在PHP中定义常量使用的是”define()”这个函数,但是在类里面定义常量使用的是”const”这个关键字,类似于C中的#define如果在程序中改变了它的值,那么会出现错误,用”const”修饰的成员属性的访问方式和”static”修饰的成员访问的方式差不多,也是使用”类名”,在方法里面使用”self”关键字。但是不用使用”$”符号,也不能使用对象来访问。

class MyClass
{
//定义一个常量constant
const CONSTANT = 'constant value';
function showConstant() {
echo self::CONSTANT . "n"; //使用self访问,不要加”$”
}
}
echo MyClass::CONSTANT . "n"; //使用类名来访问,也不加”$”
$class = new MyClass();
$class->showConstant();
// echo $class::CONSTANT;#是不允许的

以上内容摘录自:
https://www.cnblogs.com/qxbj/articles/4308803.html



Related Posts: PHP 面向对象的static和constant关键字使用 :

留言