讨论数量:
static function
const
static $abc
都是大量使用的,尤其在 Model
层,因为应用静态的变量、方法,常量不是特定的对象,而是类。
例如:消息有N多个频道,const SYSTEM = 'system';const NOTICE = 'notice';
例如:定义频道的名称
public static $typeName = [
self::SYSTEM => '系统',
self::NOTICE => '提醒',
];
例如:给用户发送通知
public static function forUser($user_id,$title,$content){
'user_id' => ..,
'at_time' => date(..)
}
我的理解是,常用方法,程序中有多个类经常调用的方法发,之间又没有继承关系的,使用 静态
,常驻内存,不需要每次实例化,方便调用速度快,因为是经常调用,所以占用内存也没关系。
需要按需加载,不会被多个类调用的方法,使用频次少,使用 动态
,线程结束后会被 gc
自动清理。
实例是单独的内存,实例是属性集,属性集可能也有单独的内存划分,但是静态的不一样,他们是固定的一块内存划分, php官方的这个示例也说明了
class sample_class
{
static $var = 0;
public function func_having_static_var($x = NULL)
{
if ($x === NULL)
{ return self::$var; }
self::$var = $x;
}
}
$a = new sample_class();
$b = new sample_class();
echo $a->func_having_static_var()."\n";
echo $b->func_having_static_var()."\n";
// this will output (as expected):
// 0
// 0
$a->func_having_static_var(3);
echo $a->func_having_static_var()."\n"; // 3
echo $b->func_having_static_var()."\n"; // 3
推荐文章: