浅谈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 相关文章推荐
介绍几个array库的新函数 php
Dec 29 PHP
PHP生成月历代码
Jun 14 PHP
php错误级别的设置方法
Jun 17 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 PHP
PHP发送AT指令实例代码
May 26 PHP
thinkPHP交易详情查询功能详解
Dec 02 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
php动态绑定变量的用法
2015/06/16 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
jQuery Validation PlugIn的使用方法详解
2015/12/18 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
2018/02/01 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
毕业生求职信范文
2014/06/29 职场文书
个人委托书范本
2014/09/13 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
2015年药房工作总结
2015/04/25 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python