浅谈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实现图片简单上传
Oct 09 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
php获取指定范围内最接近数的方法
Jun 02 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
composer.lock文件的作用
Feb 03 PHP
php读取txt文件并将数据插入到数据库
Feb 23 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
php str_getcsv把字符串解析为数组的实现方法
Apr 05 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
php实现每日签到功能
Nov 29 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 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将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
yii中widget的用法
2014/12/03 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
Symfony2开发之控制器用法实例分析
2016/02/05 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
jQuery调用RESTful WCF示例代码(GET方法/POST方法)
2014/01/26 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
代码分析Python地图坐标转换
2018/02/08 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
解析Python3中的Import
2019/10/13 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
教师申诉制度
2014/01/29 职场文书
计算机系本科生求职信
2014/05/31 职场文书
财务会计专业求职信
2014/06/09 职场文书
护士实习求职信
2014/06/22 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
个人年终总结怎么写
2015/03/09 职场文书
公司捐书倡议书
2015/04/27 职场文书
css实现文章分割线样式的多种方法总结
2021/04/21 HTML / CSS
Python中的xlrd模块使用整理
2021/06/15 Python