V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
herozw
V2EX  ›  PHP

PHP class 中静态属性和普通属性,分别在什么时候用到?

  •  
  •   herozw · 2017-10-09 16:24:50 +08:00 · 2568 次点击
    这是一个创建于 2626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知道 static 属性在一次声明后,会存在于内存,效率较高。 如果类中要定义一个开始时间,用静态属性还是用普通属性。

    9 条回复    2017-10-10 21:30:46 +08:00
    crystom
        1
    crystom  
       2017-10-09 16:25:33 +08:00
    这点时间对代码效率几乎没有影响
    zjsxwc
        2
    zjsxwc  
       2017-10-09 16:31:07 +08:00
    想怎么用就怎么用呗, 看看 laravel 的 facade,虽然你用起来是类静态属性,但实际背后是实例对象的普通属性。
    GOOD21
        3
    GOOD21  
       2017-10-09 16:53:37 +08:00
    最优的话当时是静态的好了。
    GOOD21
        4
    GOOD21  
       2017-10-09 16:55:13 +08:00
    如果用普通的,假如你的 php 进程要执行 2 秒钟,那么这个开始时间是会变的。
    Sikoay
        5
    Sikoay  
       2017-10-09 17:16:40 +08:00 via Android
    不要乱用 static 变量,基本原则,就算要用,一般我都是用的都是 final static 或者是 get&set 看具体场景吧
    Sikoay
        6
    Sikoay  
       2017-10-09 17:17:59 +08:00 via Android
    不然程序中多个地方访问同一个 static 变量,不小心修改了就 GG 了,以后出现了 bug 很难排查
    hantsy
        7
    hantsy  
       2017-10-10 10:57:57 +08:00
    static 最好定义全局不变(+final 整个应用范围只读,比如一些默认参数)或全局共享(可变)的属性。这是 OOP 语言都有的特性。
    jfcherng
        8
    jfcherng  
       2017-10-10 13:41:37 +08:00
    @hantsy final 只能用在 class 和 method 上吧?
    hantsy
        9
    hantsy  
       2017-10-10 21:30:46 +08:00
    @jfcherng PHP 现在我好久没写了,我的表述在 Java 中应该不成问题的,https://github.com/hantsy/angularjs-springmvc-sample-boot/blob/master/src/main/java/com/hantsylabs/restexample/springmvc/ApiErrors.java
    这些用法在 OOP 语言都是差不多的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.