浅谈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 相关文章推荐
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
一个漂亮的php验证码类(分享)
Aug 06 PHP
教你如何使用php session
Oct 28 PHP
利用中国天气预报接口实现简单天气预报
Jan 20 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
浅析php适配器模式(Adapter)
Nov 25 PHP
19个Android常用工具类汇总
Dec 30 PHP
php操作xml并将其插入数据库的实现方法
Sep 08 PHP
php编程实现简单的网页版计算器功能示例
Apr 26 PHP
详解php中生成标准uuid(guid)的方法
Apr 28 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 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下检测字符串是否是utf8编码的代码
2008/06/28 PHP
PHP动态创建Web站点的方法
2011/08/14 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
再论Javascript的类继承
2011/03/05 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
js select实现省市区联动选择
2020/04/17 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
JS实现移动端整屏滑动的实例代码
2017/11/10 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
Python元字符的用法实例解析
2018/01/17 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
python学生管理系统
2019/01/30 Python
利用python画出AUC曲线的实例
2020/02/28 Python
pandas参数设置的实用小技巧
2020/08/23 Python
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
工程质量承诺书范文
2014/03/27 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
离职证明范本
2015/06/12 职场文书
Django实现drf搜索过滤和排序过滤
2021/06/21 Python