PHP:访问一个变量';在一个函数中声明,在另一个函数中声明

PHP:访问一个变量';在一个函数中声明,在另一个函数中声明,php,Php,假设我有以下几点: class Submit extends \RightNow\Models\Base { function __construct() { parent::__construct(); } function inner () { return $i++; } function outer(){ $i = 0; $this->inner(); e

假设我有以下几点:

class Submit extends \RightNow\Models\Base
{
    function __construct()
    {
        parent::__construct();
    }
    function inner () {
        return $i++;
    }
    function outer(){
        $i = 0;
        $this->inner();
        echo $i;
    }
}

$submit = new Submit();
$submit->outer();
internal()
如何访问在
outer()
中声明的变量$i?我尝试过使用
global
,但没有成功

我知道在我最基本的例子中,我可以将变量作为参数传入,但这只是我问题的一个例子

我正在使用CodeIgniter,你可以。例如:

UPD

如果要传递多个变量:

  • 您可以通过引用传递数组:
  • 您可以传递一个对象。在这种情况下,它总是隐式地通过引用传递。例如
  • 在同一个类中,您可以使用私有成员,但请确保函数不是递归的(即,同一字段不会在不同位置同时重用):
  • 你可以。例如:

    UPD

    如果要传递多个变量:

  • 您可以通过引用传递数组:
  • 您可以传递一个对象。在这种情况下,它总是隐式地通过引用传递。例如
  • 在同一个类中,您可以使用私有成员,但请确保函数不是递归的(即,同一字段不会在不同位置同时重用):

  • 正如您所提到的,您正在使用Codeigniter,您可以通过以下代码实现它。在任何类中,都可以在类中的任何成员函数中使用类成员变量

    class Submit extends \RightNow\Models\Base
     {
      public $i = 0;
      function __construct()
       {
          parent::__construct();
       }
      function inner () {
        return $this->i++;
       }
      function outer(){
        $this->i = 0;
        inner();
        echo $this->i;
       }
      outer();
    }
    

    正如您所提到的,您正在使用Codeigniter,您可以通过以下代码实现它。在任何类中,都可以在类中的任何成员函数中使用类成员变量

    class Submit extends \RightNow\Models\Base
     {
      public $i = 0;
      function __construct()
       {
          parent::__construct();
       }
      function inner () {
        return $this->i++;
       }
      function outer(){
        $this->i = 0;
        inner();
        echo $this->i;
       }
      outer();
    }
    

    如果您的所有方法都在一个类中,您可以使用下面的方法,即变量是类中的类引用集,因此所有类方法都自动可用

    类中的变量称为属性

    请参见上文,所有内容都引用类中设置的类属性
    $i

    class Submit extends \RightNow\Models\Base
     {
      public $i = 0;
      function __construct()
       {
          parent::__construct();
       }
      function inner () {
        return $this->i++;
       }
      function outer(){
        $this->i = 0;
        inner();
        echo $this->i;
       }
      outer();
    }
    
    或者,如果您在来自的多个变量上使用相同的过程,您可以将它们组合成一个
    数组
    ,并将该数组作为单个参数传递

    根据值是来自类内部还是外部,您的代码看起来会略有不同

    class Submit extends \RightNow\Models\Base
     {
      public $i = 0;
      function __construct()
       {
          parent::__construct();
       }
      function inner () {
        return $this->i++;
       }
      function outer(){
        $this->i = 0;
        inner();
        echo $this->i;
       }
      outer();
    }
    
    参考资料:


    如果所有方法都在一个类中,则可以使用以下方法,即变量是类中的类引用集,因此所有类方法都自动可用

    类中的变量称为属性

    请参见上文,所有内容都引用类中设置的类属性
    $i

    class Submit extends \RightNow\Models\Base
     {
      public $i = 0;
      function __construct()
       {
          parent::__construct();
       }
      function inner () {
        return $this->i++;
       }
      function outer(){
        $this->i = 0;
        inner();
        echo $this->i;
       }
      outer();
    }
    
    或者,如果您在来自的多个变量上使用相同的过程,您可以将它们组合成一个
    数组
    ,并将该数组作为单个参数传递

    根据值是来自类内部还是外部,您的代码看起来会略有不同

    class Submit extends \RightNow\Models\Base
     {
      public $i = 0;
      function __construct()
       {
          parent::__construct();
       }
      function inner () {
        return $this->i++;
       }
      function outer(){
        $this->i = 0;
        inner();
        echo $this->i;
       }
      outer();
    }
    
    参考资料:


    所以如果我有一打参数,我就要做十几次?这是唯一的方法?所以如果我有一打参数,我必须做十几次?那是唯一的办法?