是否有必要使用全局变量?
我遇到了有关 php 中的全局变量
范围的问题。下面是我的代码片段,你能告诉我我做错了什么,以及是否不需要使用全局变量?
PHP版本是5.3.5
a.php
global $login;
$login = 0 ;
if(1==1) // here is some session checking condition
{
echo "<BR/>inside if".__FILE__;
$login = 1 ;
}
function alpha() {
echo "<BR/>".__FUNCTION__;
global $login;
if($login)
{
echo "<br/>Login is available";
}
else
{
echo "<br/>Login not available";
}
}
b.php
$login=0;
if(1==1) // same condition define in a.php
{
ECHO "<BR/>inside if".__FILE__;
$login = 1;
}
if($login == 0)
{
echo "out";
}
login.php
require_once("a.php");
require_once("b.php");
alpha();
echo "<BR/>".__FILE__;
echo $login;
看来我的方法不对,有什么更好的方法吗?在这种情况下是否需要声明全局变量? b.php
中的 $login
会影响任何变量吗?
注意: a.php
和 b.php
中的 if
条件相同,但我无法合并。
I am facing an issue regarding global variable
scope in php. Below is my code snippet, can you tell me what am I doing wrong, and if the use of a global variable is unnecessary?
PHP version is 5.3.5
a.php
global $login;
$login = 0 ;
if(1==1) // here is some session checking condition
{
echo "<BR/>inside if".__FILE__;
$login = 1 ;
}
function alpha() {
echo "<BR/>".__FUNCTION__;
global $login;
if($login)
{
echo "<br/>Login is available";
}
else
{
echo "<br/>Login not available";
}
}
b.php
$login=0;
if(1==1) // same condition define in a.php
{
ECHO "<BR/>inside if".__FILE__;
$login = 1;
}
if($login == 0)
{
echo "out";
}
login.php
require_once("a.php");
require_once("b.php");
alpha();
echo "<BR/>".__FILE__;
echo $login;
It seems that my approach is wrong, what's a better method? Is declaring any variable global is necessary in this scenario? Will $login
in b.php
affect any variable?
note: if
condition in both a.php
and b.php
is same, but i can not combine.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用基于函数或类的方法。
一个简单的函数是
Use functions or class based approach.
A simple function would be
是的,我同意马丁的观点,你应该尝试上课。
我想补充一点,将这种逻辑分成两个文件是错误的。如果是对 $login 的操作,您应该简单地创建类似“Login”的类,并将有关登录(或一般用户管理)的所有决策和操作集中到该类中。没有理由将其分成多个文件。
我希望我有所帮助。
Yes, I agree with Martin, you should try classes.
And I would like to add, that having this kind of separating logic into two files is wrong. If it is operation on $login, you should simply create class like "Login" and concentrate all decisions and operations regarding login (or user management generally) into that class. There is no reason to separate it into multiple files.
I hope I helped.