PHP类范围:在包含的文件中看不到的类

时间:2012-10-25 18:30:35

标签: php

我有一个班级......

class myclass {}
$myclass = new myclass();
$myclass->frigin = 'awesome';

稍后在不同的 PHP文件中,我有一些包含...

include('hippie_deflectors.php');

但是,包含的PHP根本看不到$myclass

让PHP服从的最简单方法是什么?


这个档案...... .com/[module]/requested_page.php

...有两个包含过滤下面的从上到下......

包含第1组


.com/system/header.php

.com/system/header_classes.php [$myclass在这里定义]

包含第2组


.com/[module]/index_get.php

.com/system/template_1.php

.com/system/includes_js.php

.com/system/scripts/onload.js [$myclass未定义此处]

2 个答案:

答案 0 :(得分:0)

你的问题有点难以理解。但这会奏效:

文件:File1.php

class myclass {}
$myclass->frigin = 'awesome';
include('hippie_deflectors.php');

档案:hippie_deflectors.php

include('different_file.php');

文件:different_file.php

var_dump($myclass);

将打印:

object(stdClass)#1 (1) { ["frigin"]=> string(7) "awesome" } 

这是您的设置吗?

答案 1 :(得分:0)

我意识到我的错误,希望其他人可以从中学习。虽然我有范围问题(包含另一个的PHP文件然后只能通过将它作为参数传递给函数来访问类)我最终意识到JavaScript文件是作为字符串输出的,而不是作为一个包括!这意味着JavaScript文件会使浏览器发出第二个请求,其中只有PHP会解析该文件。

...视觉

  • 客户端请求[脚本元素的字符串中的JavaScript文件输出]
  • 客户收到网页结果。
  • 客户请求脚本文件。
  • PHP在 第二次/单独请求 上解析的脚本文件。
值得庆幸的是,由于我将程序设计为高度模块化,我能够声明该类,创建它的新副本,然后包含一个模块化的PHP文件,该文件不包括整个类,但是更小但更通用的变量块我需要的。

这不解决单独但相关的问题,其中类只能在X数量的包含中访问,然后才能将它们作为参数传递给函数。