我有这两个功能:
public function desplubicarItem(){
$item_id = JRequest::getCMD('id');
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$query = 'UPDATE #__k2_items SET published=0 WHERE id='.$item_id;
$db->setQuery($query);
$db->query();
}
public function getCuponesUtilizados(){
$db = JFactory::getDbo();
$query = 'SELECT count(item_id) as contador
FROM #__cuphoneo_subscripcion as cs
LEFT JOIN #__k2_items as k2i ON k2i.id = cs.item_id
WHERE cs.estado=0 AND k2i.id='..' GROUP BY cs.item_id';
$db->setQuery($query);
$resultado = $db->loadObject();
return $resultado;
}
我想在第二个函数内的第一个函数中使用变量$item_id
。我怎么能这样做?
答案 0 :(得分:5)
声明一个类属性item_id
并在你想要的每个方法中访问它:
private $item_id;
而不是$item_id
使用$this->item_id
。
答案 1 :(得分:2)
示例,使用类属性:
public function desplubicarItem(){
$this->item_id = JRequest::getCMD('id');
$app = JFactory::getApplication();
$db = JFactory::getDbo();
$query = 'UPDATE #__k2_items SET published=0 WHERE id='.$this->item_id;
$db->setQuery($query);
$db->query();
}
public function getCuponesUtilizados(){
//you can now access $this->item_id inside getCuponesUtilizados
echo $this->item_id;
$db = JFactory::getDbo();
$query = 'SELECT count(item_id) as contador
FROM #__cuphoneo_subscripcion as cs
LEFT JOIN #__k2_items as k2i ON k2i.id = cs.item_id
WHERE cs.estado=0 AND k2i.id='..' GROUP BY cs.item_id';
$db->setQuery($query);
$resultado = $db->loadObject();
return $resultado;
}
答案 2 :(得分:0)
好像你在课堂上写作 您可以在类中创建属性并将数据放入其中,以便稍后在其他方法中使用它,如下所示:
...
public $item_id;
public function desplubicarItem(){
$this->item_id = JRequest::getCMD('id');
...
请注意,现在您必须在方法中使用$this->item_id
或者你可以在第一个函数中调用第二个函数并传递变量(如果你可以调用一个方法并从两个函数中获得一个结果)。
public function desplubicarItem(){
...
$this->getCuponesUtilizados($item_id);
}
public function getCuponesUtilizados(item_id){
// now you can use $item_id here
}
答案 3 :(得分:0)
有多种方法可以实现这一目标。取决于函数的调用位置以及您想要做的事情。
您可以将$item_id
作为第一个函数的返回值,例如
public function desplubicarItem(){
$item_id = JRequest::getCMD('id');
...
return $item_id
}
然后在第二个函数中为它添加一个参数:
public function getCuponesUtilizados($item_id){
}
然后你可以像这样打电话给他们:
$this->getCuponesUtilizados(desplubicarItem());
并使用您的第一个函数的返回值作为参数,将$item id
权限放入第二个函数。
但这只是一种可能性,它实际上取决于您的代码/类设计,这是最适合您的方式。
答案 4 :(得分:0)
您可以将其设为属性,也可以将其作为参数或组合使用。
由于它是一个公共函数,您需要确保已设置参数的属性或值。例如,您可以将它作为必需参数添加到函数中,以便在调用时必须提供它,或者您可以将其添加为$item_id = null
参数,然后,如果未设置,则从中获取值请求(正如您在第一个函数中所做的那样),但是有条件地。例如:
public function desplubicarItem($item_id = null)
{
$this->item_id = $item_id != null ? : JRequest::getCMD('id');
...
}
您可以将其设置为您的类的构造函数,但是您必须在构造函数中处理相同的问题。但这实际上取决于全班同学在做什么。
这样做的一个原因是:如果您不想在请求中使用这些方法,例如,如果您从查询中获取了ID,该怎么办?我不会对你的方法加以限制,只是在没有直接提供值的情况下使其回落。否则你将真正限制你的灵活性。