浅谈php中include文件变量作用域


Posted in PHP onJune 18, 2015

在php中我们有时候需要include一个文件。比如我前段时间在写一个框架的时候,打算用原生的php作为模板,然后写一个display方法引入模板文件就可以,但是这只是我的意淫而已。

写完后发现在模板中所有的变量都提示未定义。通过各种研究和查找资料,总结了include文件时的几种情况下的作用域。

第一种情况:A文件include B文件,在B文件中可以调用A中的变量。

A文件代码:

<?php
 $aaa = '123';
 
 include "B.php";

B文件代码:

<?php

echo $aaa;

可以正常输出内容。

第二种情况:A文件include B文件,然后在A文件中可以调用B文件的变量。
A文件代码:

<?php

include "B.php";

echo $fff;

B文件代码:

<?php

$fff = 'i am f';

这个时候是可以正常输出内容的。

第三种情况:A文件的某个类的某个方法中调用B文件,然后在B文件中可以调用该方法中的变量。
A文件代码:

<?php

class test{
  public function show(){
    $bbb = 'abc';
    include "B.php";
  }
}

$t = new test;
$t->show();

B文件的代码:

<?php

echo $bbb;

这个时候是可以正常输出内容的。

第四种情况:A文件通过定义的一个函数引入B文件,在B文件中无法使用A中的变量,但是可以使用A文件中调用函数(display)中的变量。
A文件代码:

<?php
$aaa = '123';

function display($file){
  $bbb= 'asdasdas';
  include $file;
}

display("B.php");

B文件代码:

<?php
echo $aaa;
echo $bbb;

运行后$aaa提示未定义,$bbb可以正常输出。

所以我开始准本用一个display方法来引入模板是不可行的。根据方面的三种情况,最后我选择了写一个类来导入模板文件。目前ThinkPHP和Smarty也都是用类来引入模板文件的。文中不足之处欢迎指正。

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
php checkbox 取值详细说明
Aug 19 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
PHP 时间日期操作实战
Aug 26 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
PHP之短标签开启设置
Jun 17 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 24 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 #PHP
php实现只保留mysql中最新1000条记录
Jun 18 #PHP
php使用COPY函数更新配置文件的方法
Jun 18 #PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 #PHP
php实现mysql数据库分表分段备份
Jun 18 #PHP
php遍历树的常用方法汇总
Jun 18 #PHP
php编写简单的文章发布程序
Jun 18 #PHP
You might like
PHP 选项及相关信息函数库
2006/12/04 PHP
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
EasyUI中的tree用法介绍
2011/11/01 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
生成二维码方法汇总
2014/12/26 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
北京银河万佳Java面试题
2012/03/21 面试题
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
考博专家推荐信模板
2013/12/02 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
税务会计岗位职责
2015/04/02 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技
Echarts如何重新渲染实例详解
2022/05/30 Javascript