解决 ECMall 错误 Call to a member function get() on a non-object in frontend.base.php

Fatal error:  Call to a member function get() on a non-object in frontend.base.php on line 39

这一行的源代码如下:

$this->assign(‘cart_goods_kinds’, $cart->get_kinds(SESS_ID, $this->visitor->get(‘user_id’)));

产生这个错误的原因很可能是$this->visitor这个对象未正确实例化。
解决这个问题,我的办法很简单,加入对变量的检查,以下是我修改后的内容:

$this->assign(‘cart_goods_kinds’, is_object($cart) && is_object($this->visitor) ? $cart->get_kinds(SESS_ID, $this->visitor->get(‘user_id’)) : 0);

ECMall在功能上做的不错,只是从php开发的角度来看,是有一些繁杂,在开发架构上搞的过于臃肿,在一些基础的代码规范上还有待于加强。

不仅这个错误,其他的一些小错误都是由于未对使用的变量进行判断而直接使用而引起的。虽然都是小错误,但还是再严谨一些的好。小错误对于有经验的开发人员来说,是很容易解决的,但对于一些使用整套程序做网站的技术门外汉来说,再小的错误都是解决不了的大问题。