php静态类 使用场景,【php】PHP静态方法和非静态方法的使用场景

本文探讨了静态方法和非静态方法在不同情况下的选择,包括单例模式、工厂设计模式,以及何时使用静态方法(如全局访问函数)和何时用实例方法(实例间交互)。通过实例解析和区分静态类与单例,帮助读者明确何时选择哪种方法。
摘要由CSDN通过智能技术生成

单纯的语法上是没有什么问题的

但对静态方法和非静态方法的使用场景

什么情况下该用什么希望大家能讲解下

我现在的使用情况是:

基本上都是实例方法, 除了单例, 工厂, 几个设计模式时使用!

其他的时机完全不知道怎么搞!

回答

附加个例子,如果能写出答案,也会懂什么时候要用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 "
";

unset($user3);

echo $user1->getCount();

写接口的时候对外暴露的方法用静态的。

如果你的类是需要实例化的,并且你的的方法是实例之间发生作用,那么事实上你“只能”使用非静态方法

如果你希望暴露一些什么地方都不会改变的,全局可用的方法,那么使用静态方法(场景上会让你感觉像是在调用一个全局可用的函数)

这里还有个陷阱是静态类和单例的区别,它们可能都是提供一个全局的”唯一”对象,并且暴露一些方法给外部使用

它们的场景区别是,如果你的这个唯一对象需要维持一定的状态,或者实现某个接口或者继承某个类,或者集成在某个类中,那么使用单例

如果你的这个对象仅仅就是提供全局访问,不涉及到状态,那么使用静态类静态方法

静态方法是属于类的,与实例无关,一般公用的方法用静态方法

不需要实例化对象的都可以用静态方法~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值