Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >当未在对象上下文中设置来自类外的公共变量时,$this

当未在对象上下文中设置来自类外的公共变量时,$this
EN

Stack Overflow用户
提问于 2014-03-06 22:16:56
回答 3查看 1.9K关注 0票数 5

我有一个简单的类,我想从类外设置public变量。

代码语言:javascript
代码运行次数:0
复制
<?php

class AlachiqHelpers
{
    public $height;

    public static function getHeight($height)
    {
        return $this->height - 50;
    }

    public static function setHeight($height)
    {
        $this->height = $height;
    }
}

因此,我得到了以下错误:

在对象上下文中不使用$this

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-06 22:18:04

$this关键字不能在静态上下文中使用!

案例1:

您需要从函数定义中删除static关键字。

而不是

代码语言:javascript
代码运行次数:0
复制
public static function setHeight( $height ){

应该是

代码语言:javascript
代码运行次数:0
复制
public function setHeight( $height ){

案例2:

如果你真的需要让它(功能)成为static.您可以只使用self关键字来访问变量。

代码语言:javascript
代码运行次数:0
复制
public static $height;
public static function setHeight( $height )
{
    self::$height=22;
}

请记住,$height变量也是static

工作密码..。(静态的)

代码语言:javascript
代码运行次数:0
复制
<?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 :

代码语言:javascript
代码运行次数:0
复制
130
票数 6
EN

Stack Overflow用户

发布于 2014-03-06 22:18:52

删除static,这些方法不应该是静态方法,而应该是实例方法。

$this不能在静态上下文中使用,因为静态上下文是由所有实例共享的,而不是单个实例。

静态方法只能访问静态属性。

非静态方法可以访问非静态属性(通过$this->foo)和静态属性(通过self::$foo)。

票数 3
EN

Stack Overflow用户

发布于 2014-03-06 22:19:55

Source

因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$this在声明为静态的方法中不可用。

不能在静态函数中使用$this,因为静态函数独立于任何实例化对象。

试着使函数不是静态的。

代码语言:javascript
代码运行次数:0
复制
public  function setHeight( $height ){

        $this->height=$height;

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22242936

复制
相关文章
类变量与对象变量
# 类变量与对象变量 # 代码 # coding=UTF-8,类变量与对象变量 class Robot: """表示有一个带有名字的机器人。""" # 一个类变量,用来计数机器人的数量 population = 0 # 这是一个类变量,属于Robot类 def __init__(self, name): # name变量属于一个对象(通过self分配),因此它是一个对象变量 """初始化数据""" self.name = name
benym
2022/07/14
9270
Python - 面向对象(三)公共变量,受保护变量,私有变量
在Python的类里面,所有属性和方法默认都是公共的;但Python也可以设置受保护、私有类型的变量or方法
小菠萝测试笔记
2020/06/09
1.6K0
Python面向对象编程-类和对象-实例变量和类变量
实例变量是指属于特定对象的变量。每个类的实例都具有自己的实例变量,它们的值可以不同。在上面的示例中,Person 类的 name 和 age 属性都是实例变量,因为它们属于特定的 Person 对象。
玖叁叁
2023/04/19
8470
【Python】类型注解 ② ( 基础变量设置类型注解 | 类对象设置类型注解 | 容器变量设置简易类型注解 | 容器变量设置详细类型注解 )
元组 数据容器类型 的 详细 类型注解 , 需要为每个元素都进行类型标记 , 有几个元素就要标记几个类型 ;
韩曙亮
2023/10/11
2330
【Python】类型注解 ② ( 基础变量设置类型注解 | 类对象设置类型注解 | 容器变量设置简易类型注解 | 容器变量设置详细类型注解 )
探秘 flex 上下文中神奇的自动 margin
水平垂直居中也算是 CSS 领域最为常见的一个问题了,不同场景下的方法也各不相同,各有优劣。嗯,下面这种应该算是最便捷的了:
Sb_Coco
2019/05/24
1.5K0
外键的设置
② 外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显式建立;
诡途
2022/05/09
2.8K0
外键的设置
类其中的变量为final时的用法
类当中final变量没有初始缺省值,必须在构造函数中赋值或直接当时赋值。否则报错。
马克java社区
2021/03/15
4510
慎用公共变量
或者使用objc_setAssociatedObject函数将key指定的关联对象设置为nil;
Jacklin999
2018/09/12
5810
慎用公共变量~~
在开发过程中,避免不了会使用公共变量,记录共享对象状态、数据最简单的方式就是创建创建公共变量。 当业务逻辑变多,还采用这种思想就会变得危险,代码逻辑变得不清晰,慢慢就有一种代码坏味道。具体总结为一下几点: 过多逻辑分支,不够清晰,公共变量不利于系统维护和项目拓展; 安全性收到威胁,过多地方共享变量,变量的写入和读取在多线程下是危险的; 业务逻辑交叉过多时,很难保证数据-逻辑的一致性; 出现问题解决问题,Objective-C针对上述问题,提供了一个解决方案:即关联对象(Associated
Jacklin
2018/05/15
7870
实时错误 '91' :对象变量或with块变量未设置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/9672911
DannyHoo
2018/09/13
4.1K0
实时错误 '91' :对象变量或with块变量未设置
【说站】javascript上下文中栈的理解
以上就是javascript上下文中栈的理解,希望对大家有所帮助。更多Javascript学习指路:Javascript
很酷的站长
2022/11/24
2630
实时错误 ‘91‘ :对象变量或with块变量未设置
最多的应该就是这个问题了,“实时错误‘91’:对象变量或with块变量未设置”。如右图:
DannyHoo
2022/05/09
2.3K0
实时错误 ‘91‘ :对象变量或with块变量未设置
Python面向对象中的类变量,实例变量怎么来理解?
前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个类变量和实例变量的问题,这里拿出来给大家分享下,一起学习下。
前端皮皮
2022/08/17
1.7K0
Python面向对象中的类变量,实例变量怎么来理解?
C++_类型&变量&类和对象
数据类型(type) 简称类型 是具有相同特征的数据的集合,是一个抽象概念 C++的数据类型主要分为三种: 原始数据类型:内置或预定义的数据类型,用户可以直接使用它们声明变量。例如:int,char,float,bool等 整数、字符、布尔型、浮点、双浮点数、void、宽字符 等 派生数据类型:从原始或内置数据类型派生的数据类型 函数 数组 指针 引用 用户自定义类型:这些数据类型由用户自己定义 类 结构体 union:在并集中,所有成员共享相同的内存位置 枚举类型 typedef:为 复杂的声明 定义 简
用户10551528
2023/05/09
3630
C++_类型&变量&类和对象
PyQt5 技巧篇-增加一个类级变量,类级变量的设置方法,类级"常量"设置方法
如果想增加一个全局变量来用的话,请看这篇文章: Python全局变量引用设置方法
小蓝枣
2020/09/22
8270
PyQt5 技巧篇-增加一个类级变量,类级变量的设置方法,类级“常量“设置方法
如果想增加一个全局变量来用的话,请看这篇文章: Python全局变量引用设置方法
小蓝枣
2022/05/07
970
java类和对象——变量赋值方法
此处的set和get的方法可以用 atl + insert 选择Getter and Setting实现
小雨的分享社区
2022/10/26
1.1K0
盘点一个面向对象的类变量和实例变量问题
前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python基础问题,这里拿出来给大家分享下,一起学习下。
前端皮皮
2022/08/17
6680
盘点一个面向对象的类变量和实例变量问题
点击加载更多

相似问题

在类中未在对象上下文中调用方法时使用$this

14

对象上下文中的变量

22

致命错误:在未在对象上下文中使用$this时

13

错误:未在对象上下文中使用“$this”

25

类上下文中的变量数组

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档