我有一个简单的类,我想从类外设置public
变量。
<?php
class AlachiqHelpers
{
public $height;
public static function getHeight($height)
{
return $this->height - 50;
}
public static function setHeight($height)
{
$this->height = $height;
}
}
因此,我得到了以下错误:
在对象上下文中不使用$this
发布于 2014-03-06 22:18:04
$this
关键字不能在静态上下文中使用!
案例1:
您需要从函数定义中删除static
关键字。
而不是
public static function setHeight( $height ){
应该是
public function setHeight( $height ){
案例2:
如果你真的需要让它(功能)成为static
.您可以只使用self
关键字来访问变量。
public static $height;
public static function setHeight( $height )
{
self::$height=22;
}
请记住,$height
变量也是static
工作密码..。(静态的)
<?php
class AlachiqHelpers
{
public static $height;
public function getHeight()
{
return self::$height - 50;
}
public static function setHeight($height1)
{
self::$height = $height1;
}
}
$a = new AlachiqHelpers();
$a->setHeight(180);
echo $a->getHeight();
OUTPUT :
130
发布于 2014-03-06 22:18:52
删除static
,这些方法不应该是静态方法,而应该是实例方法。
$this
不能在静态上下文中使用,因为静态上下文是由所有实例共享的,而不是单个实例。
静态方法只能访问静态属性。
非静态方法可以访问非静态属性(通过$this->foo
)和静态属性(通过self::$foo
)。
发布于 2014-03-06 22:19:55
因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$this在声明为静态的方法中不可用。
不能在静态函数中使用$this
,因为静态函数独立于任何实例化对象。
试着使函数不是静态的。
public function setHeight( $height ){
$this->height=$height;
}
https://stackoverflow.com/questions/22242936
复制相似问题