浅谈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存储过程调用实例代码
Feb 03 PHP
PHP设计模式之迭代器模式的深入解析
Jun 13 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
php类的扩展和继承用法实例
Jun 20 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
Jul 01 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
Nov 19 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 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基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
DOM基础及php读取xml内容操作的方法
2015/01/23 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
基于vue.js组件实现分页效果
2018/12/29 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
python动态监控日志内容的示例
2014/02/16 Python
python使用循环实现批量创建文件夹示例
2014/03/25 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
俄罗斯Sportmarket体育在线商店:用于旅游和户外活动
2019/11/12 全球购物
前台文员的岗位职责
2013/11/14 职场文书
正规的求职信范文分享
2013/12/11 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
怎么写工作检讨书
2014/11/16 职场文书
未中标通知书
2015/04/17 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
诚信教育主题班会
2015/08/13 职场文书
python如何将mat文件转为png
2022/07/15 Python