PHP中的类静态函数变量引用

PHP中的类静态函数变量引用,php,class,Php,Class,PHP7 我试图在不同的情况下使用相同的类方法。第一次,当用户在数据库中创建新条目时,我用空值绘制管理页面。它已按如下方式创建 $classname::drawAdmin(FALSE); $classname是一个变量,因为我事先不知道哪些类将用于网页(Ikr?),必须从数据库中获取 在方法内部,它检查是创建新对象还是重用现有对象 static function drawAdmin( $mod = FALSE ) { print 'Technology<input typ

PHP7

我试图在不同的情况下使用相同的类方法。第一次,当用户在数据库中创建新条目时,我用空值绘制管理页面。它已按如下方式创建

$classname::drawAdmin(FALSE);
$classname是一个变量,因为我事先不知道哪些类将用于网页(Ikr?),必须从数据库中获取

在方法内部,它检查是创建新对象还是重用现有对象

static function drawAdmin( $mod = FALSE ) {
        print 'Technology<input type="text" name="technology" value="'.($mod?$this->technology:"").'" /><br />';
etc...
}
(类的构造函数清理$\u GET数组。)

在这种情况下,我收到一条错误消息:

Fatal error: Using $this when not in object context in [censored]/class.phone.php on line 932
即使对象创建正确且存在(使用var_dump检查)

哈哈,跟我开玩笑,这是一个静态的方法,所以我不能用$this!但是,当我将打印更改为:

static function drawAdmin( $mod = FALSE ) {
        print 'Technology<input type="text" name="technology" value="'.($mod?self::technology:"").'" /><br />';
etc...
}
如果我将(受保护的)变量添加到static,我就不能再使用$this->


有没有办法,我可以使用相同的类变量来处理对象上下文和不处理对象上下文?

我认为可以保持方法静态,但如果编辑现有对象,则必须将同一类的实际实例作为可选的第二个参数传递到方法中,在$mod为true时使用,然后使用“技术”价值来自该实例

例如:

static fuction drawAdmin($mod=FALSE, $class=NULL) { 
        print 'Technology<input type="text" name="technology" value="'.($mod?$class->getTechnology():"").'" /><br />';
}

你声称的第一个例子效果很好,但不起作用:静态方法中没有
$this
。我在第一个例子中没有使用
$this
。这就是为什么它可以工作的原因。底线是,你不能这样做,你不能使用
$this
是一个静态方法。整个帖子暗示了应用程序中可能存在的一些通常糟糕的设计早一点而不是晚一点解决是值得的buggy代码仍然是buggy代码,即使特定路径在特定时间未执行。我认为可以保持方法静态,但如果编辑现有对象,则必须将同一类的实际实例作为可选的第二个参数传递到方法中,在$mod为true时使用,然后使用“技术”“来自该实例的值。错过了类方法中的箭头。”。
Fatal error: Undefined class constant 'technology' in [censored]/class.phone.php on line 932
static fuction drawAdmin($mod=FALSE, $class=NULL) { 
        print 'Technology<input type="text" name="technology" value="'.($mod?$class->getTechnology():"").'" /><br />';
}
$class->drawAdmin(TRUE, $class);