陈敬秀 2013年03月08日 星期五 10:24 | 1715次浏览 | 0条评论
在使用静态
oop中静态属性和方法的使用,具有几方面的好处,一方面可以提高代码的性能,另一方面调用起来也很方便,而且通常结合一些设计模式,比如单例模式,工厂模式使用,这样才可以对资源更好的管理,而不会出现大量的冗余和资源的浪费。
几大误区:
1.静态属性只可以在静态方法中使用,其实在非静态方法中,依然可以使用
2.静态方法中调用的方法必须是静态方法,其实不然,比如
class User{
static public function getUser(){
$user = new User();
$user->find();
}
public function find(){
return "kivmi";
}
}
这种调用方式的缺陷是,在静态方法内部必须实例化自己,才可以调用类的其他方法,然而如果使用静态方法里,只能使用静态的方法的调用,则会让人吐槽
class User{
static $instance;
static $id;
private function __construct(){
}
static function getInstance(){
if(null == self::$instance){
self::$instance = new self();
}
return self::$instance;
}
//////////////////////这段代码容易犯错/////////////////////////
static function getUser(){
self::$instance::find(); //这里有错,不能使用::find()调用该方法,而不得
//不使用 User::find()或者self::find()进行调用
}
///////////////////////////////////////////////////////////////////////////////////////
static function find(){
return "kivmi";
}
private function getId(){
return self::$id;
}
}
调用 User:getInstance()->getId();
User::getUser();User::find();
静态方法调用有一个特点就是,使用类名::方法名的方式调用方法,而使静态方法之间的调用具有一定的约束,这种约束显得不自然,但是从使用上还是很简单的。
3.类的静态方法和类的对象之间的交互,也就是内存中对象之间的引用没能很好的理解
Zeuux © 2024
京ICP备05028076号
暂时没有评论