【PHP7 面向对象 笔记三】类常量

一、定义

  可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。常量的值必须是一个定值,不能是变量,类属性,数字运算的结果或函数调用。


二、语法

const constant = '常量';


三、调用方法

1) 类内部
// 方法一:
self::常量名;
// 方法二:
类名::常量名;

举例:

// 方法一:self::常量名称
self::WINNER;
// 方法二:类名::常量名
Chu::WINNER;

完整代码:

class Animal
{
    // 可以写所需要的代码
}

class Chu extends Animal
{
    // 定义一个常量
    const WINNER = '今天是9月8日';

    public function getDay()
    {
        echo Chu::WINNER; // 可以 return Chu::WINNER;(由于一个方法中只能有一个 return,所以此处用 echo 来测试)
        echo '<hr>';
        return self::WINNER;
    }
}

$obj = new Chu();
var_dump($obj->getDay());

运行结果:

在类中访问

2) 类外部
// 方法一:
类名::常量名;
// 方法二:
对象名::常量名;

举例:

// 方法一:类名::常量名
Chu::WINNER;
// 方法二:对象名::常量名
$obj::WINNER;

完整代码:

class Animal
{
    // 可以写所需要的代码
}

class Chu extends Animal
{
    const WINNER = '今天是9月8日';
}

$obj = new Chu();
echo Chu::WINNER;

运行结果:

在类外访问


四、使用 define 定义类常量

举例1:在类中定义类常量

class Animal
{
    // 代码块
}

class Chu extends Animal
{
    const WINNER = '今天是9月8日';
    define('W', '今天是2018年9月8日');

    public function get()
    {
        echo Chu::W;
        return self::WINNER;
    }
}

$obj = new Chu();
var_dump($obj->get());

运行结果:

无法用define定义类常量

注:无法在类中用 define 直接定义类常量,只能在类的方法中定义,且使用的是定义时的默认值

举例2:在类的方法定义类常量

class Animal
{
    // 代码块
}

class Chu extends Animal
{
    public function get()
    {
        define('W', '今天是2018年9月8日');
        return W;
    }
}

$obj = new Chu();
var_dump($obj->get());

运行结果:

在类的方法中定义类常量

总结:

1)在类中,只能使用 const 来定义类常量;
2) 在类内,使用类常量,用 self::常量名 或者 类名::常量名;
3)在类外,使用类常量,用 类名::常量名 或者 对象名::常量名;
4) self 用来找到当前变量所在的类的名称.

猜你喜欢

转载自blog.csdn.net/studyphp123/article/details/82532123