在php中从另一个页面调用函数
我正在调用一个在smsconfig.php文件中定义的函数,如在php中从另一个页面调用函数,php,Php,我正在调用一个在smsconfig.php文件中定义的函数,如 $GLOBAL_URL_OF_THE_SITE= "http://webfaction"; function get_site_url(){ return $GLOBAL_URL_OF_THE_SITE; } 在我的index.php文件中,我将包含该smsconfig.php文件,然后我将执行以下操作: <?php include("smsconfig.php"); ?>
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
function get_site_url(){
return $GLOBAL_URL_OF_THE_SITE;
}
在我的index.php文件中,我将包含该smsconfig.php文件,然后我将执行以下操作:
<?php
include("smsconfig.php");
?>
<html>
<head >
<link rel="stylesheet" type="text/css" href="default.css" />
<script src="<?php echo get_site_url();?>/UI/jquery/jquery-1.7.2.min.js" type="text/javascript"></script>
请告诉我我做错了什么?这是变量范围的问题。函数无法看到该变量,因为该变量不在其作用域内。你应该这样做:
function get_site_url(){
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
return $GLOBAL_URL_OF_THE_SITE;
}
这是一个可变范围的问题。函数无法看到该变量,因为该变量不在其作用域内。你应该这样做:
function get_site_url(){
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
return $GLOBAL_URL_OF_THE_SITE;
}
默认情况下,函数无权访问全局变量。在访问变量之前,必须使用
global
声明变量:
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
function get_site_url(){
global $GLOBAL_URL_OF_THE_SITE;
return $GLOBAL_URL_OF_THE_SITE;
}
如果没有global
,您应该会看到一条警告,您可能正在抑制该警告:
PHP注意:未定义变量:站点的全局URL
默认情况下,函数无权访问全局变量。在访问变量之前,必须使用
global
声明变量:
$GLOBAL_URL_OF_THE_SITE= "http://webfaction";
function get_site_url(){
global $GLOBAL_URL_OF_THE_SITE;
return $GLOBAL_URL_OF_THE_SITE;
}
如果没有global
,您应该会看到一条警告,您可能正在抑制该警告:
PHP注意:未定义变量:站点的全局URL
您可以使用数组
$GLOBALS
在函数体中编写代码而不声明全局。此数组将所有全局变量作为键。您可以使用数组$GLOBALS
在函数体中进行编码,而无需声明全局。这个数组的所有全局变量都是键。不,不,不是这样的,实际上我在/etc/host中将我的127.0.0.1地址设为webpartion,您可以使用常量来实现这一点;查找define()
。不,不,不是这样的。实际上,我将我的127.0.0.1地址设置为/etc/host中的webpartion。您可以使用常量来实现这一点;查找define()
。更好的解决方案是首先避免使用全局变量。另外几点:您不应该在名称中嵌入变量的作用域之类的内容,只需将其称为网站的$URL\u
;您应该选择较短的变量名SITE\u URL
与站点的URL\u
一样短、易读、易于沟通;您应该保留大写字母
作为真常量;如果您试图定义真正的常量,应该使用。所有这些加起来就是define(“SITE\u URL”http://mysite.com");代码>更好的解决方案是首先避免全局变量。另外几点:您不应该在名称中嵌入变量的作用域之类的内容,只需将其称为网站的$URL\u
;您应该选择较短的变量名SITE\u URL
与站点的URL\u
一样短、易读、易于沟通;您应该保留大写字母
作为真常量;如果您试图定义真正的常量,应该使用。所有这些加起来就是define(“SITE\u URL”http://mysite.com");代码>我想这要视情况而定。如果这将用于在任何地方生成URL,那么如果在该例程中或全局声明URL,则不会产生任何功能上的差异。但是,是的,米格尔的解决方案更好。如果我将变量定义为public@user1667633-看一看meagar的评论。@andrewsi我的解决方案不是“我的解决方案”,我只是更正了我们收到的代码。你的解决方案是更好的解决方案。声明一个全局函数和一个全局变量来访问该函数是没有意义的。@user1667633类外没有“public”变量。我想这取决于它。如果这将用于在任何地方生成URL,那么如果在该例程中或全局声明URL,则不会产生任何功能上的差异。但是,是的,米格尔的解决方案更好。如果我将变量定义为public@user1667633-看一看meagar的评论。@andrewsi我的解决方案不是“我的解决方案”,我只是更正了我们收到的代码。你的解决方案是更好的解决方案。声明一个全局函数和一个全局变量来访问该函数是没有意义的。@user1667633类外没有“public”变量。