浅谈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的配置文件php.ini
Oct 09 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
php 数组使用详解 推荐
Jun 02 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
PHP 文件系统详解
Sep 13 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
zf框架的校验器InArray使用示例
Mar 13 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
PHP制作用户注册系统
Oct 23 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 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中使用PDF文档功能
2006/10/09 PHP
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
php读取csv数据保存到数组的方法
2015/01/03 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
textContent在Firefox下与innerText等效的属性
2007/05/12 Javascript
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
javascript基本包装类型介绍
2015/04/10 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
基于JS实现的笛卡尔乘积之商品发布
2016/05/13 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
python实现定时同步本机与北京时间的方法
2015/03/24 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python爬取酷狗音乐排行榜
2019/02/20 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Python networkx包的实现
2020/02/14 Python
Python PIL库图片灰化处理
2020/04/07 Python
python创建文本文件的简单方法
2020/08/30 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
世界顶级足球门票网站:Live Football Tickets
2017/10/14 全球购物
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
廉洁教育学习材料
2014/05/19 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
新手初学Java List 接口
2021/07/07 Java/Android
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
Golang连接并操作MySQL
2022/04/14 MySQL