无法在common.PHP中实例化PHP Herdeoc中的对象(和/或$this超出对象上下文!!)

无法在common.PHP中实例化PHP Herdeoc中的对象(和/或$this超出对象上下文!!),php,mysql,zend-framework,zend-db,Php,Mysql,Zend Framework,Zend Db,我的Web应用程序应该允许用户输入标签颜色、背景颜色和字体颜色的十六进制值。我需要能够根据用户输入的十六进制值更新背景颜色、标签颜色和字体颜色,这些十六进制值保存在MySQL表中。我的目标是从common.php(这是我的css)开头的数据库中提取十六进制颜色值,并将它们分配给三个颜色变量($clabel、$cbackground和$cfont),然后在我的css中使用它们,以便所有颜色更改都在一个位置。但是我遇到了一些问题,所有问题的根源是$this不在common.php内的对象上下文中--

我的Web应用程序应该允许用户输入标签颜色、背景颜色和字体颜色的十六进制值。我需要能够根据用户输入的十六进制值更新背景颜色、标签颜色和字体颜色,这些十六进制值保存在MySQL表中。我的目标是从common.php(这是我的css)开头的数据库中提取十六进制颜色值,并将它们分配给三个颜色变量($clabel、$cbackground和$cfont),然后在我的css中使用它们,以便所有颜色更改都在一个位置。但是我遇到了一些问题,所有问题的根源是$this不在common.php内的对象上下文中-----我想知道我该怎么做才能实现同样的结果。(我还想在这里提到,我尝试在common.php中包含一个类并实例化该类的一个对象。它不起作用,我的整个网页丢失了commom.php中定义的所有格式)

场景1:

这段代码把整个网页搞乱了,就好像css没有eist一样

当我使用layout.phtml中的相同代码时(作为测试):


我想知道为什么$this不在对象上下文中,因为它在我的代码中使用,或者如何将它放在对象上下文中?

例如,您只能在类中使用$this

class TestClass {
    private $name = "Name";
    public function echoName() {
        echo $this->name; // use $this only inside class
    }
}
如果将object$user作为全局变量,则需要添加

global $user;
作为函数getLabelColor()的第一行,然后像这样使用它:

$userid = $user->id;

阅读有关php的更多信息正如您所确定的,问题在于代码行:

$userid = $this->user->id;
此代码出现问题的原因是,
$this
是一个特殊变量,仅在类的方法上下文中有效

common.php是一个过程文件,没有定义类,因此
$this
不在对象中,这就是为什么会出现错误消息的原因

假设您正在使用Zend_Auth,您可以将该行更改为:

$userid = Zend_Auth::getInstance()->getIdentity()->id;

但是,在Zend Framework应用程序的上下文中,common.php不是您希望看到的代码类型。相反,您应该将功能移动到一组控制器、模型和视图脚本。

看起来很像。对我来说,好像你没有正确使用Zend框架。您应该学习如何使用它。您的脚本不应该发送文本/css标题并输出
标记。输出应该是样式表还是HTML页面?@Tim输出应该是HTML页面。有人建议我这样做,我认为当我使用时,我必须使用------@vascowhite,我对Zend不是很熟练,所以我认为我没有在这个模块中使用他们的任何功能。我只是手动打开数据库,读取值并将其分配给变量。然而,其他模块确实使用Zend,我很快就会进行快速入门。但主要问题是,在common.php和getdata.php中使用“$this不在对象上下文中”。我想知道为什么它不在对象上下文中,它什么时候在对象上下文中。$userid=Zend_Auth::getInstance()->getIdentity()->id不起作用,它弄乱了整个页面的格式,就像$userid=$this->user->id;这就好像不存在common.php一样。这意味着您没有使用Zend_Auth,然后在控制器级别使用.Zend_Auth——可能我必须实现一个css控制器。您需要从会话中检索用户id。
class TestClass {
    private $name = "Name";
    public function echoName() {
        echo $this->name; // use $this only inside class
    }
}
global $user;
$userid = $user->id;
$userid = $this->user->id;
$userid = Zend_Auth::getInstance()->getIdentity()->id;