为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下在php中与require_once()相关的变量传递的问题

请问一下在php中与require_once()相关的变量传递的问题

守着一只汪 2022-01-12 15:11:55
在a.php当中,赋值一个变量$var在a.php中,使用require_once调用b.php, c.php,在c.php中使用require_once调用d.php$var直接赋予某个数值,如$var = 12;时,在b/c/d.php中均可正常读取并使用$var, 当使用另外一个变量赋值,如$var = $xxx,则只在b/c中可正常读取使用$var, 而在d.php中就无法读取$var.这是怎么回事啊?在用变量赋值的情况下,怎么才能让d.php也正常读取使用$var呢?非常感谢“阳光上的桥、新翼追风,aupm”。我是为了实现一个特别的功能,而自己修改代码,才出现了上述的情况。再仔细研究之后,发现问题可能不是我上面讲的。。。。。。if 。。。。} elseif ($modelid > 0) {if ($postTopic) {$postTopic->postCheck();}$topichtml = $postTopic->getTopicHtml($modelid,$add); // A处:$add就是我的目标变量,在此处是有效的。} elseif ($pcid > 0) {。。。} require_once(R_P . 'lib/topicpost.class.php'); //B处: topicpost.class.php就是调用的文件$topicpost = new topicPost($pwpost);if (empty($_POST['step'])) {。。。。} elseif ($_POST['step'] == 2) {。。。。$topicpost->execute($postdata,$add); //C处:再次使用$add变量,但无效果。execute函数在topicpost.class.php中定义。。。。。}如果在文件最前面定义$add = 12(或其他具体数值,则在C处有效,如果是直接使用,则只在A处有效,在C处无效。在B处和C处之间有一些代码,也有一些require_once, 但感觉都无关,而且都不使用$add变量。怪异啊?大侠们请帮忙解释下什么原因?
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

你说的这样的情况应该不可能的,你自己编写四个只有一两行的测试的a.php、b.php、c.php、d.php试试看,无论是否使用变量,都能使用,除非你赋值语句在require_once之后。

查看完整回答
反对 回复 2022-01-16
?
波斯汪

TA贡献1811条经验 获得超4个赞

require 好像 就是直接包含进来的。比include多了一层是否存在的判断罢了(个人理解)。
应该不会出现你说的情况。你看下是不是其他的原因造成的。

查看完整回答
反对 回复 2022-01-16
?
不负相思意

TA贡献1777条经验 获得超10个赞

非常不建议这样写代码。
require_once()是调用公用的代码段(b.php,c.php,d.php),而你在公用的代码段又使用私有(a.php)中的变量值,这样不符合代码的规范。
也许楼主是为了学习相互调用的过程,但本人认为,应该在最初始的学习阶段,就学习并深刻理解规范的代码编写,这样对以后的工作非常有用。

查看完整回答
反对 回复 2022-01-16
  • 3 回答
  • 0 关注
  • 372 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号