浅谈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动态变静态原理
Nov 25 PHP
标准PHP的AES加密算法类
Mar 12 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
php生成高清缩略图实例详解
Dec 07 PHP
php结合md5实现的加密解密方法
Jan 25 PHP
YII Framework框架教程之缓存用法详解
Mar 14 PHP
Yii2 assets清除缓存的方法
May 16 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
关于PHP中interface的用处详解
Jul 26 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
Phpbean路由转发的php代码
2008/01/10 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
2012/01/20 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
JavaScript 高级语法介绍
2009/06/15 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
理解JavaScript中的对象
2020/08/25 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python实现list由于numpy array的转换
2018/04/04 Python
COS美国官网:知名服装品牌
2019/04/08 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
法学专业毕业生自荐信范文
2013/12/18 职场文书
小学美术教学反思
2014/02/01 职场文书
出售房屋协议书范本
2014/10/06 职场文书
暑期实践个人总结
2015/03/06 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python