• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP中调用别的文件的include函数,要如何传参?

php 搞代码 3年前 (2022-01-25) 14次浏览 已收录 0个评论
文章目录[隐藏]

一般是
a.php

<?php    echo $var;?>

b.php

<?php    $var = 'ssss';    include 'a.php'; // 输出 ssss?>

但是如果
a.php

<?php    echo $var;?>

f.php

<?php    function i($path) {        include $path;    }?>

b.php

<?php    include 'f.php';    $var = 'ssss';    i('a.php'); // Undefined variable: var?>

请问这种情况下要如何传参?先谢谢。

回复内容:

一般是
a.php

<?php    echo $var;?>

b.php

<?php    $var = 'ssss';    include 'a.php'; // 输出 ssss?>

但是如果
a.php

<?php    echo $var;?>

f.php

<?php    function i($path) {        include $path;    }?>

b.php

<?php    include 'f.php';    $var = 'ssss';    i('a.php'); // Undefined variable: var?>

请问这种情况下要如何传参?先谢谢。

看起来好多文件好乱 … 我们先不管这么多个文件的事情 … 先把整个程序流程写在一个文件里吧 ..?

正常传递参数的场景如下 …

<?php/* $var defined in a.php ... */$var = 'ssss';/* print $var out in b.php ... */echo $var;

无法正常传递参数的场景如下 …

<?php/* define a function in t.php ... */function i( $path ) {    /* print value out suppose if $path equals to 'a.php' ... */    echo $var;}/* define $var and call function in b.php ... */$var = 'ssss';i( 'a.php' );

事实来2源gaodaima#com搞(代@码&网上这么一写你就会发现 … 参数无法传递的情况与是否使用了 include 完全无关 …

唯一影响参数传递的原因叫做变量作用域 … 这是编程的基础知识 … 你可以参考链接 …

现在弄明白了原因 … 我们来考虑解决方案 …

第一种办法 … 不传参 … 直接在函数内部调用全局变量 … 方法有两种 … 效果是一样的 …

<?phpfunction i( $path ) {    echo $GLOBALS['var'];}
<?phpfunction i( $path ) {    global $var;    echo $var;}

这两种方法都是绕过变量作用域让你可以在函数内部获得全局变量的引用 … 注意是引用 …

也就是如果你一不小心就会修改掉这个全局变量的值 … 而在多数情况下这不是我们想要的 …

第二种方法 … 比第一种方法实现起来麻烦 … 但是更加整洁可靠 …

<?php/* make a new slot named $package ... */function i( $path, array $package ) {    /* extract our package ... */    extract( $package );    /* print just like your are in global scope ... */    echo $var;}/* call function i() like this ... */i( 'a.php', [    'var'   =>  'ssss'] );

不使用 global … 随需随用 … 每次调用函数的时候把变量带进去 … 这是推荐的写法 …

就是这样啦 …

可以参考一下 PHPTemplate 或者 Smarty 的实现。

使用时使用方法进行传递,调用时直接使用相应的 key 获取。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP中调用别的文件的include函数,要如何传参?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址