在PHP类中,是否可以在函数内部创建私有变量?

Max*_*vis 7 php scope class function

在使用PHP类时,我注意到在类中,当我在函数中将变量定义为"$ this-> variablename方式"中该类的属性时,它会自动成为该类的公共变量.

class example {
    public function setstring() {
        $this->string = "string";
    }
}
Run Code Online (Sandbox Code Playgroud)

以便

$class = new example();
echo $class->string; 
Run Code Online (Sandbox Code Playgroud)

输出:字符串;

但是,如果我想创建只能访问类内部函数的私有变量,那么无论如何只能在函数setstring()内部声明它们吗?而不是像这样将它们声明为函数之外的私有.

class example {
    private $string ='';
    public function setstring() {
        $this->string = "string";
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可能这样做的原因是为了整洁,以免在类的开始时声明一长串私有变量.

jch*_*ook 7

,没有办法做到这一点.

在PHP中,通常使用自记录注释按字母顺序在函数上声明所有类/实例属性.这是编写类的最"整洁"和清晰的方法.还建议您根据需要使用getter和setter完全避免使用公共属性.

PHP的规范编码风格在PSR-1PSR-2中定义.我还建议您查看PHPDoc.

请记住,在类方法范围内声明的变量将是该方法的私有变量.如果您打算从其他方法访问它,则只需要一个类属性.

<?php
class Example {

  /**
   * Holds a private string
   * @var string
   */
  private $string = '';

  /**
   * Sets the private string variable
   */
  public function setString() {
    $this->string = 'This string is accessible by other methods';
    $privateVar = 'This string is only accessible from within this method';
  }

}
Run Code Online (Sandbox Code Playgroud)