浅谈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 相关文章推荐
php5 pdo新改动加载注意事项
Sep 11 PHP
一个php Mysql类 可以参考学习熟悉下
Jun 21 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
PHP 9 大缓存技术总结
Sep 17 PHP
PHP单链表的实现代码
Jul 05 PHP
基于PHPexecl类生成复杂的报表表头示例
Oct 14 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 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 a simple smtp class
2007/11/26 PHP
PHP 引用文件技巧
2010/03/02 PHP
php实现文件下载简单示例(代码实现文件下载)
2014/03/10 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
php设计模式之简单工厂模式详解
2014/09/04 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
Node.js 深度调试方法解析
2020/07/28 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python访问纯真IP数据库的代码
2011/05/19 Python
Python的语言类型(详解)
2017/06/24 Python
Python基于百度云文字识别API
2018/12/13 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
工商管理专业实习生自我鉴定
2013/09/29 职场文书
网上签名寄语活动留言
2014/01/18 职场文书
会计工作总结范文2014
2014/12/23 职场文书
2015年统战工作总结
2015/05/19 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书