浅谈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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
PHP缓存技术的使用说明
Aug 06 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
php实现refresh刷新页面批量导入数据的方法
Dec 23 PHP
php限制文件下载速度的代码
Oct 20 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
Yii控制器中filter过滤器用法分析
Jul 15 PHP
thinkPHP5.0框架API优化后的友好性分析
Mar 17 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
php fsockopen中多线程问题的解决办法[翻译]
2011/11/09 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
Linux下PHP连接Oracle数据库
2014/08/20 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
JS高仿抛物线加入购物车特效实现代码
2017/02/20 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
Angular8 Http拦截器简单使用教程
2019/08/20 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
用Python制作简单的钢琴程序的教程
2015/04/01 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python单元测试简单示例
2018/07/03 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
浅谈移动端网页图片预加载方案
2018/11/05 HTML / CSS
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
员工培训邀请函
2014/01/11 职场文书
小学毕业感言500字
2014/02/28 职场文书
模具专业求职信
2014/06/26 职场文书
武侯祠导游词
2015/02/04 职场文书
投标单位介绍信
2015/05/05 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript