Maison  >  Questions et réponses  >  le corps du texte

PHP静态方法和非静态方法的使用场景

单纯的语法上是没有什么问题的
但对静态方法和非静态方法的使用场景
什么情况下该用什么希望大家能讲解下
我现在的使用情况是:
基本上都是实例方法, 除了单例, 工厂, 几个设计模式时使用!
其他的时机完全不知道怎么搞!

PHP中文网PHP中文网2749 Il y a quelques jours492

répondre à tous(4)je répondrai

  • 巴扎黑

    巴扎黑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();

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-10 16:00:07

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

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-10 16:00:07

    如果你的类是需要实例化的,并且你的的方法是实例之间发生作用,那么事实上你“只能”使用非静态方法
    如果你希望暴露一些什么地方都不会改变的,全局可用的方法,那么使用静态方法(场景上会让你感觉像是在调用一个全局可用的函数)

    这里还有个陷阱是静态类和单例的区别,它们可能都是提供一个全局的"唯一"对象,并且暴露一些方法给外部使用
    它们的场景区别是,如果你的这个唯一对象需要维持一定的状态,或者实现某个接口或者继承某个类,或者集成在某个类中,那么使用单例
    如果你的这个对象仅仅就是提供全局访问,不涉及到状态,那么使用静态类静态方法

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-10 16:00:07

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

    répondre
    0
  • Annulerrépondre