我使用Wordpress自定义主题。
在主题header.php的顶部,我有一个移动检测脚本。
require_once '/extras/Mobile_Detect.php';
$detect = new Mobile_Detect;
然后在header.php页面的下面,我有一行检查用户是否在移动设备上,并相应地显示不同的内容。
if ($detect->isMobile()) { echo "Premium"; } else { echo variable('prem_no'); }
但是,在页面下方的PHP文件中,当我尝试使用相同的脚本时:
if ($detect->isMobile()) { echo "Find a psychic"; } else { echo "Our Psychic Readers"; }
我得到这个错误:
致命错误:在C:'wamp'www'clairvoyant'extras'reader-categories.php中的非对象上调用成员函数isMobile()
我怎样才能使一个文件所需或包含在header.php文件中,可以在整个页面文件的其余部分被引用?
我在include, include_once, require和require_once之间有点困惑,所以有人可以帮助清理吗?
require
和include
之间没有太多区别,但主要的一点是require
的文件必须存在,否则你会得到一个错误,而include是可选的。
和_once
是确保你不包含它超过once
。
但是,在页面下方的进一步包含的PHP文件中,当我尝试使用相同的脚本,我得到这个错误…
这听起来像$detect
不是同一个对象,例如
require_once '/extras/Mobile_Detect.php';
$detect = new Mobile_Detect;
if ($detect->isMobile()) { echo "Premium"; }//Good
....
$detect['mobile'] = 'iPhone';
if ($detect->isMobile()) { echo "Find a psychic"; }//Bad
我的猜测是$detect
正在被重置为其他东西。对$detect
的所有实例进行搜索,并寻找使用单个等号而不是双等号或三等号的东西。它也可能是另一个正在重置它的include。
如果变量$detect
flat out不存在,您将收到一个不同的通知Undefined variable: detect
.
如果$detect
是一个有效的对象,但是该方法不再存在,那么您将收到Fatal error: Call to undefined method Mobile_Detect::isMobile
。
然而,你的错误说,你正在处理的变量不是一个对象,因此首先不能有成员函数