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

PHP 的 getter

  •  
  •   eecjimmy · 2021-03-30 14:33:04 +08:00 · 2083 次点击
    这是一个创建于 1115 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php
    
    /**
     * Class Person
     */
    class Person
    {
        public function getName1()
        {
            static $name = false;
            if ($name === false) {
                $name = "张三";
            }
            return $name;
        }
    
        private $_name = false;
    
        public function getName2()
        {
            if ($this->_name === false) {
                $this->_name = "张三";
            }
            return $this->_name;
        }
    }
    
    

    在不考虑其他情况下,getName1getName2可有区别??

    9 条回复    2021-03-30 19:00:39 +08:00
    JKeita
        1
    JKeita  
       2021-03-30 15:07:17 +08:00
    第一种情况,很可能被人喷。
    eason1874
        2
    eason1874  
       2021-03-30 15:12:41 +08:00   ❤️ 1
    getName2 是设为内部值,内部其他方法还是可以改的,重新实例化 Person 也会重置它。

    getName1 是把值存起来了,改不了了,就算你重新实例化 Person 也改不了了。
    zpfhbyx
        3
    zpfhbyx  
       2021-03-30 15:12:44 +08:00
    @JKeita 不会被人喷。。估计会被人打。。
    InternetExplorer
        4
    InternetExplorer  
       2021-03-30 15:19:43 +08:00   ❤️ 1
    第一种会增加以后找 bug 的时间
    FaceBug
        5
    FaceBug  
       2021-03-30 15:20:57 +08:00
    getName1

    直接 return '张三'就好了,整一堆没用的活儿
    FreeEx
        6
    FreeEx  
       2021-03-30 15:26:03 +08:00
    有种 95 年咖啡的味道
    CodeCodeStudy
        7
    CodeCodeStudy  
       2021-03-30 15:30:11 +08:00
    函数内部的 static 就是个黑箱子,外面是看不到里面的,而且函数退出后该 static 变量依然存在。
    Rache1
        8
    Rache1  
       2021-03-30 17:47:41 +08:00
    一个属于实例,一个属于全局
    CODEWEA
        9
    CODEWEA  
       2021-03-30 19:00:39 +08:00
    变量属于函数,变量属于类
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4405 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:05 · PVG 12:05 · LAX 21:05 · JFK 00:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.