const和static都是php中定义常量和变量的关键词,但它们有不同的用法和作用域。const关键词用于定义常量,一旦定义后不能修改,作用域仅限当前类,不能继承或修改。而static关键词用于定义静态变量,可以在类中共享和修改,作用域可扩展到整个程序。
下面是一个完整示例,用于演示const和static的应用:
<?php
class Example
{
const PI = 3.14; //定义一个常量PI
static $counter = 0; //定义一个静态变量counter
function __construct()
{
self::$counter++; //每次创建对象时,静态变量counter加1
}
function getCounter()
{
return self::$counter; //返回静态变量的值
}
}
$obj1 = new Example();
$obj2 = new Example();
$obj3 = new Example();
echo "The constant PI is: " . Example::PI . "
"; //输出常量PI的值,注意用::来访问
echo "There are " . $obj1->getCounter() . " objects created.
"; //输出静态变量counter的值
?>
输出结果为:
The constant PI is: 3.14
There are 3 objects created.
在这个例子中,我们首先定义了一个类Example,其中用const定义了一个常量PI,用static定义了一个静态变量counter。在类的构造函数中,每次创建对象时,通过self::$counter++来加1。在getCounter()函数中,我们返回了静态变量counter的值。
在主程序中,我们创建了三个对象$obj1,$obj2和$obj3。通过Example::PI这种方式来访问常量PI的值,通过$obj1->getCounter()来访问静态变量counter的值。最终输出结果是:常量PI的值为3.14,创建了3个对象。
总结一下,const和static都是php中用于定义常量和变量的关键词,但它们的作用和用法有所不同。常量的作用域仅限于当前类,且一旦定义不能修改。静态变量的作用域可以扩展到整个程序,且可以在类中共享和修改。
正文完