静态方法 与 对象方法

在使用thinkPHP 中, 看过一份代码
model中写的都是静态方法,都是用::直接调用,
如:图片描述

复杂业务中类中的方法都是 new 一个对象再调用
如:图片描述

想知道,这样做的原理是什么

阅读 2.5k
3 个回答

并没有什么原理可说,这个是不同的代码设计方法。
一般来说,静态方法都是一些服务型的东西或者是内部自行保持的单例
而实例化一个对象实现的业务,比如说ORM的话就是需要创建一个数据实例进行操作的
这种没有什么特别好的讲。。
感觉就是自己明白说不出来

<?php
class A(){

    static function test1(){

    }


    public function test2(){

    }

}

##############调用静态test1,以下三种写法等效
//<1>
$a = new A();
$a->test1();

//<2>
$a = new A();
$a::test1();

//<3>
A::test1();
############注意:只有静态方法才能用::来调用,否则一律用->

写为静态方法直接调用,是为了方便,和定义函数差不多,一般是常用的公共方法写做静态方法,方便调用,静态方法一般不会定义太多,因为会随着框架的启动直接就初始化,占用内存。而new方法只会在new的时候才会初始化,占用内存,所以每个model各自的逻辑一般不会写为静态方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题