2014-07-16 365 views
0

我在传递变量从一个方法到另一个,我想如下麻烦,但未能传递一个变量到另一个

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

+0

这是...是一个从原来的exampled代码剧烈变化..你应该包括这第一,这就是为什么你有一个负载的信息是没有使用你 –

+0

它基本上是相同的例子,其他人可以得到这个答案,如果只是在变量等的变化... – user3680708

+0

那么,更新的代码更改的用法和原因,为什么你没有得到正确的验证 –

回答

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


在一个侧面说明。我建议避免使用PHP保留字如global,因为它可能产生混淆的很多后来在发展有了更新的代码

你没有得到的原因Use of Global scope in PHP


预期验证是这里的一小行:

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

因为您正在调用您的第一个方法来设置变量..您也正在导致页面重定向,在此之前它会重置所有更改(这是因为您的默认设置已加载到页面加载中),您可以使用会话来查看是否使更改通过页面刷新。唯一不足的是,它需要一个剧烈的结构变化

+0

有没有办法重新定向并显示勇气? – user3680708

+0

@ user3680708对不起,延迟。*显示勇气*谨慎解释? –

+0

了解了,也许不太了解我,但解释和他的建议被理解为朋友 – user3680708

1

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

class myclass{ 

     public $global; 

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

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

现在尝试把它放在课堂上,但仍然无法正常工作。 – user3680708

+0

@ user3680708,可能是因为您以后在代码中没有正确使用该类。为什么不在你的问题中包含你使用该类的代码? – developerwjk

+0

@ rob看看我的更新 – user3680708

1

要与$this->访问变量,它需要一个类属性:

class myclass{ 
    public $global; 

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

    public function method_two(){ 
     return $this->global; 
    } 
} 
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(); 

希望这有助于!

+0

我真的很感谢你的帮助,但还是不行:( – user3680708

+0

@ user3680708,我在我的答案中增加了一些示例代码,所以你可以测试它,它对我很有用 –

0

“$ this”用于访问类的内部变量。你可以在这里看到的细节: 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; 
     } 
} 
0

RobBarmar说,你的问题是全球变量的范围。

class myclass{ 
    public $global; 

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

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

我鼓励大家花上几分钟的时间彻底研究范围的概念,因为它是现代编程语言的必要概念。

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

相关问题