浅谈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下实现农历日历的代码
Mar 07 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
Jan 16 PHP
gd库图片下载类实现下载网页所有图片的php代码
Aug 20 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 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
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP进程通信基础之信号
2017/02/19 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
JSQL  一个 web DB 的封装
2010/05/05 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
vuejs父子组件通信的问题
2017/01/11 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
Python中文件操作简明介绍
2015/04/13 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
Python实现的简单模板引擎功能示例
2017/09/02 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
python调用java的jar包方法
2018/12/15 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
pandas 数据类型转换的实现
2020/12/29 Python
小学教师的个人自我鉴定
2013/10/26 职场文书
小学教师办公室制度
2014/02/03 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
三问三解心得体会
2014/09/05 职场文书
好人好事新闻稿
2015/07/17 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL