这是我的代码:
if (ismobile()) {
// Include mobile version of this page
require_once("mobile_signup.php");
// Die so it will not include desktop version below mobile version
die();
}
function this_is_a_function() {
// Some code here
}
// Desktop version of code here
mobile_signup.php还在其中声明了名为“this_is_a_function()”的函数。我该怎么做呢?我意识到有一个“function_exists('this_is_a_function')”,但这两个代码中都有很多函数,因此对两个页面上的所有函数执行此操作是不切实际的。
此网站已预先构建,我正在尝试将其转变为适合移动设备的网站。因此,重写整个脚本并不是一件容易的事。
答案 0 :(得分:1)
你的问题有点令人困惑,但我假设你想要不同的功能,不管他们是否在手机上。
要做到这一点,只需要一个具有移动功能的页面(如果它们在移动设备上),并且如果它们不在移动设备上则需要单独的页面,并保留在主页面上同时用于移动设备和其他设备的功能。这样就不会遇到任何定义两次函数的问题。
如果你需要这个,因为页面不彼此相关,那么只需调用不同的函数就是最简单的答案。
我再一次不确定上述哪一个是您的问题,因为您的问题不够详细,无论每个页面做了什么,当前页面做了什么等等。
答案 1 :(得分:1)
如果您必须在页面开头包含移动版本文件后立即die()
并且仍然希望它运行良好,那么这意味着您的移动文件可以独立运行;因此,重定向是一个更好的选择。
header("Location: mobile_signup.php");
die()
会停止执行,但这并不意味着如果你在某个地方使用它,那么它下面的所有代码都会变得无用,它仍然会被PHP解析
答案 2 :(得分:1)
所有函数都在解析过程中在php系统中注册,所以如果你的复制函数是动态的,条件包含可以确保没有重复的函数会出现那么它就可以了,但是如果它们在同一个脚本中或者在一个脚本中执行过程,然后它会给出你的错误,记住它的解析时错误,
记住php首先解析脚本然后执行它,因此首先声明函数,然后执行脚本以便解析后执行die()
,
在wordpress环境中,函数在全局命名空间中被decalred,这是使用这种编码风格的最佳实践
if (!function_exists('HelloFunc'))
function HelloFunc(){
// do
}
或在您当前的代码中,我建议您使用此模式
if (ismobile()) {
// Include mobile version of this page
require_once("mobile_signup.php");
} else {
// Include mobile version of this page
require_once("desktop_signup.php");
}
答案 3 :(得分:0)
die()将暂停正在运行的脚本。它不会阻止php解析器在遇到die()的行之后解析代码。 当你包含文件时...解析器将在包含代码后完全编译它并且die()在这里无关...
您必须检查功能是否已存在..或使用不同的功能名称