将变量从一种方法传递到另一种方法

时间:2014-07-16 22:11:58

标签: php variables

我无法将变量从一个方法传递到另一个方法,我正在尝试如下,但是失败了

DDSD

    public function hacerloginAction(){    
    //Obtener parámetros
    $v_c_request    = $this->getRequest();
    $a_params       = $v_c_request->getParams();


    $v_c_url                = Zend_Registry::get('base_action')."login/hacerlogin";
    $this->view->v_c_url    = $v_c_url;

    //Realizar autentificación OpenId - Parte 1: conectar_openid

        //p_c_parametros 
        $_SERVER['PHP_SELF'] = str_replace("/p_c_parametros", "", dirname($_SERVER['PHP_SELF']));
        //Si 'a_params["p_c_parametros"]' tiene valores se asignan a una variable de sesion
        if( isset($a_params["p_c_parametros"]) && $a_params["p_c_parametros"] != null){
            $_SESSION['p_c_parametros'] = $a_params["p_c_parametros"];
        }

        //Se obtienen el parametro de 'p_openid' hya.com.mx
        $p_openid = str_replace("|","/",$a_params["p_openid"]);
        $this->obj_openidlog->conectar_openid($p_openid);

    //Render a la página de inicio.
    $this->render("formalogin");
}

DS

6 个答案:

答案 0 :(得分:1)

$global应该在课堂内。你在外面。

class myclass{

      public $global;

      public function method_one(){
             $this->global = "succes";
      }

      public function method_two(){
             return $this->global;
      }
}

答案 1 :(得分:1)

要使用$this->访问变量,它必须是类属性:

class myclass{
    public $global;

    public function method_one(){
        $this->global = "succes";
    }

    public function method_two(){
        return $this->global;
    }
}

答案 2 :(得分:1)

如果您尝试使用共享变量,则可能是属性:

class myclass{

  private $variable;

  public function method_one(){
         $this->variable = "success";
  }

  public function method_two(){
         return $this->variable;
  }
}

myclass的每个实例都有自己的变量私有副本。

您可以使用此代码对其进行测试:

$myObject = new myclass();

$myObject->method_one();
echo $myObject->method_two();

希望这有帮助!

答案 3 :(得分:0)

" $这"用于访问类内变量。你可以在这里看到详细信息: http://php.net/manual/en/language.oop5.basic.php 你的代码必须像

class myclass{
      public $global;
      public function method_one(){
             $this->global = "succes";
      }

      public function method_two(){
             return $this->global;
      }
}

答案 4 :(得分:0)

我设法获得"成功"很简单,下面的代码将产生所需的输出:

class myclass{
    public $global;
    public function method_one(){
        $this->global = "succes";
    }

    public function method_two(){
        return $this->global;
    }
}

$Class = new myclass();

$Class->method_one();
echo $Class->method_two();

默认情况下,global设置为空白,您必须调用method_one();为内部变量赋值。只有这样你才能产生回声。

否则,以下内容:

$Class = new myclass();


var_dump($Class->method_two());

生成

  

NULL


旁注。我建议避免使用global之类的保留PHP词,因为它可能会在开发Use of Global scope in PHP

中产生很多混乱。

使用您更新的代码

你没有得到预期的验证的原因是这一点:

 header("Location: http://hyapresenta.com/sv3/public/login/obtener");

因为你正在调用你的第一个设置变量的方法..你也引起了一个页面重定向,它在此之前重置了所有的更改(这是因为你的默认值是在pageload上加载的),你可以考虑使用会话,以保持您的更改过去页面刷新。唯一的缺点是它需要一个剧烈的结构变化

答案 5 :(得分:0)

RobBarmar类似,您的问题在于全局变量的范围。

class myclass{
    public $global;

    public function method_one(){
        $this->global = "succes";
    }

    public function method_two(){
        return $this->global;
    }
}

我鼓励您花费几分钟时间来研究范围的概念,因为它是现代编程语言的必要概念。

Here是一个很好的资源。 (不要介意它在Javascript中)