浅谈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教程孙仲岳主讲
Jan 07 PHP
php下将多个数组合并成一个数组的方法与实例代码
Feb 03 PHP
eAccelerator的安装与使用详解
Jun 13 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
php使用curl详细解析及问题汇总
Aug 11 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 PHP
php png失真的原因及解决办法
Nov 17 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
PHP概率计算函数汇总
2015/09/13 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
常用的几个JQuery代码片段
2017/03/13 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
layer 刷新某个页面的实现方法
2019/09/05 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
Python去掉字符串中空格的方法
2014/03/11 Python
Python中设置变量访问权限的方法
2015/04/27 Python
python打开文件的方式有哪些
2020/06/29 Python
Django URL参数Template反向解析
2020/11/24 Python
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
和解协议书
2014/04/16 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
详解 TypeScript 枚举类型
2021/11/02 Javascript
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android