所以我有一个名为WingStyle的项目:https ://github.com/IngwiePhoenix/WingStyle 它还在开发中,我需要一些东西让它更聪明一点。
在某种程度上,我想摆脱一些引号 - 以“html”为例。当用户调用一个尚不存在的函数时,框架会为此目的自动加载该类,然后运行该函数。在自动加载的过程中,有一个__construct
方法被触发。
我们以函数color
为例。在正常情况下,用户会这样称呼它:
<?=WS(...)
->color("white")
->end?>
但是您可能知道,我们有一组默认颜色 - 白色、黑色、红色、橙色等。现在的问题是,当我尝试使用上面没有引号的代码时,我得到了典型的"use of undefined constant"
错误。这就是为什么我编写了一个加载器函数,它只触发初始化代码,然后添加所需的常量。
据我所知,解释器在执行代码之前会看到未定义的常量 - 所以当然,我不能在常量进入之前触发初始化代码......
有没有办法让解释器首先触发初始化代码然后看到常量?我真的不介意坚持我的加载方法,但是添加东西会很烦人。我真的很想知道一种可以即时添加常量的方法。
查看项目源代码以了解我的意思。
问题的功能和机制见于:
classes/WingStyleBase.php:
- addDefs()
classes/WingStyleManager.php
- __get()