我对__get()并不陌生,并且过去使用它来制作一些非常方便的库。但是,我面临着一个新的挑战(PHP 5.3,此问题的缩写和简化代码): 通用标签

以上是用于加载View的非常非常简化的系统。此代码将调用视图并显示它: 通用标签

此代码的目标是允许视图“ myview.php”包含如下代码: 通用标签

然后,与上面的代码一起使用,这将输出“您好,汤姆!您的电子邮件是??电子邮件??”

但是,这不起作用。视图被包含在类方法中,因此当它引用$ user和$ email时,它正在查找局部函数变量-而不是属于View类的变量。因此,__get永远不会被触发。

我可以将所有视图变量更改为$ this-> user和$ this-> email之类的东西,但这将是一个混乱且不直观的解决方案。我很想找到一种方法,可以在不使用未定义变量的情况下直接引用变量,而不会让PHP引发错误。

有什么想法吗?有一种干净的方法可以做到这一点,还是我不得不诉诸于骇人听闻的解决方案?

有帮助吗?

解决方案

编辑我的答案。有点“四处乱窜”,但却是潜在的解决方案。可能想将error_handler“重置”为更多通用功能。

view.php 通用标签

filename.php 通用标签

输出

Hello Tom, your email is email@host.com and your are 未知 years old.

其他提示

您可以使用提取将所有变量拉入本地范围: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top