加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 为什么不鼓励全局$object_name?

发布时间:2020-12-13 21:41:28 所属栏目:PHP教程 来源:网络整理
导读:我有两个课程,目前我通过使用它来引用另一个课程: ClassB::func(){ global $classAObject; echo $classAObject-whatever();} 但是,我被告知不鼓励使用全球.是吗,为什么? 解决方法 有很多理由不使用全局变量.这里只是几个: 范围 在大型系统中,如果重复使用
我有两个课程,目前我通过使用它来引用另一个课程:

ClassB::func()
{
    global $classAObject;
    echo $classAObject->whatever();
}

但是,我被告知不鼓励使用全球.是吗,为什么?

解决方法

有很多理由不使用全局变量.这里只是几个:

>范围

>在大型系统中,如果重复使用半通用名称,则很容易意外地重新分配全局变量
>全局范围中的变量会增加脚本内存占用量.并不总是很重要,但可以
>在其他一些语言中,没有必要获取全局变量 – 默认情况下它们是可用的 – 如果您忘记将同名变量声明为本地变量,这可能会导致错误

>耦合

>在良好的软件设计中,组件应松散耦合.全局变量意味着紧密耦合.

>维护

>任何地方的任何其他代码都可以更改全局变量.特别是在大型系统中,这可以使调试现有代码或添加新代码成为噩梦.

处理您在帖子中给出的示例的更好方法是传递包含所需数据的对象.

classB::func($obj) 
{
   echo $obj->whatever();
}

$obj = new classAObject;
classB::func($obj);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读