单纯的语法上是没有什么问题的
但对静态方法和非静态方法的使用场景
什么情况下该用什么希望大家能讲解下
我现在的使用情况是:
基本上都是实例方法, 除了单例, 工厂, 几个设计模式时使用!
其他的时机完全不知道怎么搞!
巴扎黑2017-04-10 16:00:07
附加个例子,如果能写出答案,也会懂什么时候要用static了
class user {
private static $count = 0;
public function __construct() {
self::$count = self::$count + 1;
}
public function getCount() {
return self::$count;
}
public function __destruct() {
self::$count = self::$count - 1;
}
}
$user1 = new user();
$user2 = new user();
$user3 = new user();
echo $user1->getCount();
echo "<br />";
unset($user3);
echo $user1->getCount();
ringa_lee2017-04-10 16:00:07
如果你的类是需要实例化的,并且你的的方法是实例之间发生作用,那么事实上你“只能”使用非静态方法
如果你希望暴露一些什么地方都不会改变的,全局可用的方法,那么使用静态方法(场景上会让你感觉像是在调用一个全局可用的函数)
这里还有个陷阱是静态类和单例的区别,它们可能都是提供一个全局的"唯一"对象,并且暴露一些方法给外部使用
它们的场景区别是,如果你的这个唯一对象需要维持一定的状态,或者实现某个接口或者继承某个类,或者集成在某个类中,那么使用单例
如果你的这个对象仅仅就是提供全局访问,不涉及到状态,那么使用静态类静态方法