【问题标题】:Change class, private or public string更改类、私有或公共字符串
【发布时间】:2011-12-10 07:23:28
【问题描述】:

有一个 php 类,我喜欢在其中更改变量,但我无法实现。 班级:

class ShopCart 
{
    private $maincurrency = 'USD';

    private function set_Currency() {
        $maincurrency = 'GBP';
        return $maincurrency;
    }
}

这不起作用。就算我公开了。我做错了什么?

【问题讨论】:

    标签: php class private public


    【解决方案1】:

    您必须在方法的主体中使用$this->maincurrency。您当前的代码创建和设置局部变量,而不是成员。

    【讨论】:

    • 同意,$maincurrency 是一个类变量。 +1。
    【解决方案2】:

    你需要$this:

    class ShopCart {
       private $maincurrency = 'USD';
    
       private function set_Currency() {
           $this->$maincurrency = 'GBP';
           return $this->$maincurrency;
       }
    }
    

    否则,您将在函数本地创建一个新变量并仅使用它。

    The manual does actually tell you this already:

    在类方法中,属性、常量和方法可以是 使用$this->property 形式访问(其中property 是名称 的属性),除非访问是在 静态类方法的上下文,在这种情况下使用 表格self::$property

    文档是你的朋友; 请在询问之前咨询一下


    你可能还想考虑return来自二传手的任何东西,但这取决于你。这样做有很多好处,即使它在 PHP 中并不是那么传统。

    【讨论】:

      【解决方案3】:
      class ShopCart {
          private $maincurrency = 'USD';
      
          private function setCurrency() {
              $this->maincurrency = 'GBP';
          }
      
      }
      

      【讨论】:

      • 你不应该return,因为设置逻辑假设你只是设置一些变量值,而不是输出或返回它
      • 相反,这种方法允许链接。这也是= 在大多数(所有?)C 风格语言中所做的。
      • 并注意我更改的方法名称,您应该只使用CamelCase,但不要混用。
      【解决方案4】:

      $maincurrency = 'GBP'; 更改为$this->maincurrency = 'GBP';, 还有return $this->maincurrency;

      【讨论】:

        猜你喜欢
        • 2013-03-18
        • 2010-12-23
        • 2012-12-05
        • 2014-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-26
        相关资源
        最近更新 更多