PHP オブジェクト指向----静的
ご存知のとおり、OOP の目的は、コードを 1 つずつ記述し、コピーしてコピーし、継承して継承することで、それぞれの作業を合理的に利用することであり、同時にコードの管理を容易にすることです。いずれかのリンクで問題が発生した場合は、そのリンクにアクセスしてください。しかし、作成したクラスが 1 回しか使用されず、複数のインスタンスを生成しないことが判明する場合があります。この時点で new に移行すると、効率に影響するだけでなく、コードが十分に簡潔になりません。
非常に感情的な php は、便利で効率的な静的メソッドを提供するので、これらはもう問題ではありません。
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"; ?>