浅谈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 相关文章推荐
实用函数4
Nov 08 PHP
PHP操作数组相关函数
Feb 03 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
php使用gzip压缩传输js和css文件的方法
Jul 29 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
Zend Framework分发器用法示例
Dec 11 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
php微信公众号开发之二级菜单
Oct 20 PHP
php+js实现裁剪任意形状图片
Oct 31 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 sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
javascript根据像素点取位置示例
2014/01/27 Javascript
js判断游览器类型及版本号的代码
2014/05/11 Javascript
JS操作HTML自定义属性的方法
2015/02/10 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
2016/04/29 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
jQuery多级联动下拉插件chained用法示例
2016/08/20 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
微信小程序实现一个简单swiper代码实例
2019/12/30 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
python实现学生管理系统
2018/01/11 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
python文件拆分与重组实例
2018/12/10 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python生成requirements.txt的两种方法
2019/09/18 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
工作室成员个人发展规划范文
2014/01/24 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
日化店促销方案
2014/03/26 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB