调试未定义的变量,Magento PHP
debugging an undefined variable, Magento PHP
我正在为 magento 使用 "Love Fashion" 主题,但是如果有人以前遇到过与此主题相同的问题,这仅供参考。
我收到以下错误 Notice: Undefined variable: deal
。错误发生在第 50 行和第 61 行 - 但是错误在第 50 行出现两次,例如:
Notice: Undefined variable: deal on line 50
Notice: Undefined variable: deal on line 50
Notice: Undefined variable: deal on line 61
以下代码会发生这种情况(从第 49 行开始,到第 67 行结束):
public function addFilter($filterName,$filtervalue,$condition='='){
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
if (!$this->_joinedFields){
$this->joinFields();
}
$this->getSelect()->where('deal.'.$filterName.' '.$condition.' ?', $filtervalue);
return $this;
}
public function OrderbyAdd($orderName,$ordervalue){
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
$this->getSelect()->order('deal.'.$orderName.' '.$ordervalue);
return $this;
}
所以我的问题是,在这种情况下我该如何修复未定义的变量?
例如,我在同一文档的前面使用了以下代码,但这并没有给出任何错误:(从第 26 行开始,到第 47 行结束)
public function addDealFilter($deal){
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
if (!$this->_joinedFields){
$this->joinFields();
}
$this->getSelect()->where('related.deal_id = ?', $deal);
return $this;
}
public function joinFieldsdeal(){
$this->getSelect()->join(
array('deal' => $this->getTable('deal/deal')),
'deal.entity_id = related.deal_id',
array('deal.end_date','deal.start_date','deal.name')
);
$this->_joinedFields = true;
return $this;
}
这个问题不是 "Reference: What is variable scope, which variables are accessible from where and what are “undefined variable” errors?" 的重复问题,因为这只是简单地解释了函数的基本原理 - 这里不是这种情况。
在这两个函数(addFilter
、OrderbyAdd
)中,有问题的代码位在这里
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
函数中可用的只有个变量是
- 函数参数(
$filterName,$filtervalue,$condition
和$orderName,$ordervalue
),分别。
- 函数中定义的变量
- 任何全局变量
变量$deal
就是其中的none个。正如错误消息所说,它未定义。子句
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
对您的程序没有实际影响。变量 $deal
永远不是 Sm_Deal_Model_Deal
的实例,因为变量 $deal
不存在。 您可以从代码中删除整个 if 子句,并且不会更改系统的行为方式(除了删除那个 Notices
)
就是说 - 尚不清楚 为什么 此代码首先出现在此处。有人出于某种原因添加了它——或者可能删除了定义 $deal
的每个函数的部分。根据您的主题的干净版本检查这些文件是值得的。
我正在为 magento 使用 "Love Fashion" 主题,但是如果有人以前遇到过与此主题相同的问题,这仅供参考。
我收到以下错误 Notice: Undefined variable: deal
。错误发生在第 50 行和第 61 行 - 但是错误在第 50 行出现两次,例如:
Notice: Undefined variable: deal on line 50
Notice: Undefined variable: deal on line 50
Notice: Undefined variable: deal on line 61
以下代码会发生这种情况(从第 49 行开始,到第 67 行结束):
public function addFilter($filterName,$filtervalue,$condition='='){
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
if (!$this->_joinedFields){
$this->joinFields();
}
$this->getSelect()->where('deal.'.$filterName.' '.$condition.' ?', $filtervalue);
return $this;
}
public function OrderbyAdd($orderName,$ordervalue){
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
$this->getSelect()->order('deal.'.$orderName.' '.$ordervalue);
return $this;
}
所以我的问题是,在这种情况下我该如何修复未定义的变量?
例如,我在同一文档的前面使用了以下代码,但这并没有给出任何错误:(从第 26 行开始,到第 47 行结束)
public function addDealFilter($deal){
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
if (!$this->_joinedFields){
$this->joinFields();
}
$this->getSelect()->where('related.deal_id = ?', $deal);
return $this;
}
public function joinFieldsdeal(){
$this->getSelect()->join(
array('deal' => $this->getTable('deal/deal')),
'deal.entity_id = related.deal_id',
array('deal.end_date','deal.start_date','deal.name')
);
$this->_joinedFields = true;
return $this;
}
这个问题不是 "Reference: What is variable scope, which variables are accessible from where and what are “undefined variable” errors?" 的重复问题,因为这只是简单地解释了函数的基本原理 - 这里不是这种情况。
在这两个函数(addFilter
、OrderbyAdd
)中,有问题的代码位在这里
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
函数中可用的只有个变量是
- 函数参数(
$filterName,$filtervalue,$condition
和$orderName,$ordervalue
),分别。 - 函数中定义的变量
- 任何全局变量
变量$deal
就是其中的none个。正如错误消息所说,它未定义。子句
if ($deal instanceof Sm_Deal_Model_Deal){
$deal = $deal->getId();
}
对您的程序没有实际影响。变量 $deal
永远不是 Sm_Deal_Model_Deal
的实例,因为变量 $deal
不存在。 您可以从代码中删除整个 if 子句,并且不会更改系统的行为方式(除了删除那个 Notices
)
就是说 - 尚不清楚 为什么 此代码首先出现在此处。有人出于某种原因添加了它——或者可能删除了定义 $deal
的每个函数的部分。根据您的主题的干净版本检查这些文件是值得的。