2014-02-17 16 views
0

我想在同一個類中將一個變量從一個函數傳遞給另一個函數,目的是在查詢中使用它。函數之間的PHP傳遞變量 - 調用非對象上的成員函數

我嘗試所有這些,$此,後續代碼var_dump,FETCH_ASSOC,ECC

如何傳遞$ result變量的函數的因查詢()?

<?php 
class modUno 
{  
    public static function Uno() 
    { 
     $db = JFactory::getDBO(); 
     $query = "SELECT id AS memTotal FROM #__users WHERE username = 'bruno';"; 

     $db->setQuery($query); 
     $result = $db->query(); 
     return $result->fetch_object()->memTotal; 
    } 

    public static function due() 
    { 
     $result->due(); 

     $db = JFactory::getDBO(); 
     $query = "SELECT avatar AS memTotal FROM #__comprofiler WHERE id = '$result';"; 

     $db->setQuery($query); 
     $resulta = $db->query(); 
     return $resulta->fetch_object()->memTotal; 
    } 
} 
?> 

抱歉,我還沒有實際規定好,我想要做的是一個模塊的Joomla 3.2,因此由三個文件上面的一個是「helper.php」包含一個用於輔助類檢索信息,然後是執行初始化例程的「mod_chat.php」,調用helper例程來收集數據,最後是「default.php」,它將從mod_chat.php獲取數據並生成HTML!

mod_chat

enter code here 

<?php 

defined('_JEXEC') or die('Restricted access'); 
require_once(dirname(__FILE__).'/helper.php'); 

$risultato = modUno::uno(); 
$foto = modUno::due(); 
require JModuleHelper::getLayoutPath('mod_chat'); 
?> 

如default.php

enter code here 


<?php defined('_JEXEC') or die('Restricted access'); ?> 

<p> risultato: <?php echo $risultato; ?></p> 
<p> foto:<img src="http://somesite.com/images/comprofiler/<?php echo $foto; ?>" /></p> 

我感謝你們所有的快速反應,我試圖讓您建議的修改,但一直給我的錯誤,現在我會回答一個由一個報告錯誤 再次感謝您是一個偉大的社區

+0

設置屬性,然後分配給它 –

+0

爲什麼你的方法靜態的? –

+0

什麼是downvote? –

回答

1

試試這個

class modUno 
{ 
protected $result; 
public static function Uno() 
{ 
$db = JFactory::getDBO(); 
$query = "SELECT id AS memTotal FROM #__users WHERE username = 'bruno';"; 

$db->setQuery($query); 
$this->result = $db->query(); 
return $this->result->fetch_object()->memTotal; 
} 

public static function due() 
{ 
$this->result->due(); 

$db = JFactory::getDBO(); 
$query = "SELECT avatar AS memTotal FROM #__comprofiler WHERE id = '$result';"; 

$db->setQuery($query); 
$resulta = $db->query(); 
return $resulta->fetch_object()->memTotal; 
} 
} 
+0

創建一個這樣的屬性:-) –

+0

唯一的問題是,這是函數是靜態的 –

+0

你好,謝謝你的迴應,我加了一點信息,我試過你的方法但它返回致命錯誤:使用$ this當而不是在第12行的/home/messia/public_html/modules/mod_chat/helper.php中的對象上下文中 – user3319781

0

好了 - 因爲你沒有張貼在呼喚你的兩個函數的代碼,這裏是你的一些僞代碼:

$result = Uno(); 

$resulta = Due($result); 

接下來,你必須改變你的Due()功能是Due($result)

2

當您想要在您的類的不同方法之間共享一個變量(不將變量作爲參數傳遞給每個方法)時,最簡單的方法是將該變量聲明爲類成員。

E.g.

class myClass { 
    private $classVar; 

    function someMethod() { 
    $this->classVar = "something"; 
    } 

    function anotherMethod() { 
    echo $this->classVar; 
    } 
} 
0

我將重構所有的代碼是

<?php 
class modUno 
{  

    private $result; 
    private $db 
public function __construct() 
{ 
    $this->db = JFactory::getDBO(); 
} 
public function Uno() 
{ 

    $query = "SELECT id AS memTotal FROM #__users WHERE username = 'bruno';"; 
    $this->db->setQuery($query); 
    $this->result = $this->db->query(); 

    return $result->fetch_object()->memTotal; 
} 

public function due() 
{ 
    $result->due(); 

    $query = "SELECT avatar AS memTotal FROM #__comprofiler WHERE id = '$result';"; 

    $this->db->setQuery($query); 
    $resulta = $this->db->query(); 
    return $resulta->fetch_object()->memTotal; 
} 
} 
?> 
+0

你好,感謝你的回覆,我嘗試了你的方法,糾正了一個小遺忘「,」第6行,我添加了一些信息,我沒有給出,因爲它是一個joomla模塊需要一個靜態方法,然後我修改了函數Uno和Due in static,但它返回一個錯誤,致命錯誤:當不在對象上下文中時使用$ this, 15! 非常感謝 – user3319781

+0

是啊靜態方法不能返回$ this,因爲它們被調用時,類可能不會instaniated –

相關問題