PHP$当不在对象上下文中时,设置来自类外的公共变量
我有一个简单的类,我想从类外设置PHP$当不在对象上下文中时,设置来自类外的公共变量,php,arrays,function,oop,static,Php,Arrays,Function,Oop,Static,我有一个简单的类,我想从类外设置public变量 <?php class AlachiqHelpers { public $height; public static function getHeight($height) { return $this->height - 50; } public static function setHeight($height) { $this->heig
public
变量
<?php
class AlachiqHelpers
{
public $height;
public static function getHeight($height)
{
return $this->height - 50;
}
public static function setHeight($height)
{
$this->height = $height;
}
}
$this
关键字不能在静态上下文中使用!。
案例1:
您需要从函数定义中删除static
关键字
而不是
public static function setHeight( $height ){
应该是
public function setHeight( $height ){
案例2: 如果您真的需要将其(功能)设置为
静态
。。。您可以使用self
关键字访问变量
public static $height;
public static function setHeight( $height )
{
self::$height=22;
}
请记住,$height
变量也是静态的
工作守则。。(静态一)
删除
static
,这些方法不应该是静态方法,而应该是实例方法
$this
不能在静态上下文下使用,因为静态上下文由所有实例共享,但不是单个实例共享
静态方法只能访问静态属性
非静态方法可以访问非静态属性(通过$this->foo
)和静态属性(通过self::$foo
)
由于静态方法可以在没有创建对象实例的情况下调用,因此伪变量$this在声明为静态的方法中不可用
不能在静态函数中使用$this
,因为静态函数独立于任何实例化对象
尝试使函数不是静态的
public function setHeight( $height ){
$this->height=$height;
}
此外,如果您确实需要静态方法,您应该验证是否需要静态方法。您需要使用
static::$variable
或self::$variable
访问属性或变量,而不是$this->variable
。
<?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();
130
public function setHeight( $height ){
$this->height=$height;
}