PHP面向对象之----static

众所周知,OOP的目的就是了把一个次编写代码,复制复制再复制,继承继承再继承的合理利用每一次的工作,同时也方便代码管理。哪个环节出错了就去找哪个环节。但是有时候我们写的类,最终发现它只使用了一次,并没有生成多个的实例。这个时候再去new, 不仅影响效率,代码也显得不够简洁。
所以非常感性的php,为我们提供了一种便捷高效的方法 static 有了它以后这些统统不再是问题。


class hw{
public static function hi(){
return 'Hello World!!!';
}
}

echo hw::hi();
view plaincopy to clipboardprint?
class hw{
public function hi(){
return 'Hello World!!!';
}
}

echo hw::hi();

从上面的例子可以看出了,使用了static和不使用static属性以后可以直接使用::方法从外面直接调用,但是为了效率和其他方面因素,还是建议使用static 来限制。
static 类内部调用方法

class foo{

private static function c(){
return 'abcd';
}

public static function a(){
echo self::c();
}

}
foo::a();
使用了static 关键字来限制方法是必须使用self:: 在本类内部引用,上面的例子已经将的很清楚了。
static 属性
view plaincopy to clipboardprint?
class foo{
public static $a;
public static function a(){
self::$a='abcd';
}
}
foo::a();
echo foo::$a;
我们同样可以使用static关键字来限制变量 这个时候变量不会一直保持上一次负值时候的值。
static 继承与使用
view plaincopy to clipboardprint?
class foo{
public static $a;
public static function a(){
return 'abcd';
}
}
class oo extends foo{
public static function a(){
echo '1234';
}
}
oo::a();
static 的继承和普通类的继承方法一样,并没有太大的区别。
view plaincopy to clipboardprint?
class foo{
public static $a;
public static function a(){
return 'abcd';
}
}
class oo extends foo{
public static function aa(){
echo parent::a();
}
}
oo::aa();
只是使用的时候有写区别,必须是parent::方法来引用父类的方法,并不能直接self::来使用父类的方法,如下例子,则不会显示任何值:
view plaincopy to clipboardprint?
class foo{
public static $a;
public static function a(){
return 'abcd';
}
}

class oo extends foo{
public static function aa(){
echo self::a();
}
}
oo::a();
再一个简单的例子
view plaincopy to clipboardprint?
<?php
class Status {
public static $ICE = -1;
public static $WATER = 0;
public static $VAPOR = 1;
}
?>

<?php
$exStatus = Status::$ICE;
if ($exStatus == Status::$ICE)
echo "Ice";
else
echo "Water";
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值