首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$_data与$this->_data - PHP

$_data与$this->_data - PHP
EN

Stack Overflow用户
提问于 2012-11-14 14:39:12
回答 3查看 2.8K关注 0票数 1

我在试着弄清楚$_data vs $this->_data

代码语言:javascript
运行
复制
class ProductModel
{

    var $_data = null; <--- defined here

    function test() 
    {
       $this->_data = <--- but it's accessed using $this
    }

}

我知道在PHP语言中var是用来定义类属性的,但是为什么要用$this来访问它呢?它不应该像$this->$_data一样吗?这里使用的是什么OOP概念?它是特定于PHP的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-14 14:44:01

PHP和其他几种流行的编程语言,比如Java (重要的是要注意,PHP的面向对象选择至少部分受到了Java的启发)将上下文中的当前对象实例称为this。您可以将this (或$this in PHP)视为“当前对象实例”。

在类方法内部,$this引用当前的对象实例。

使用上述内容的一个非常小的示例:

代码语言:javascript
运行
复制
$_data = 'some other thing';
public function test() {
   $_data = 'something';
   echo $_data;
   echo $this->_data;
}

上面的代码将输出somethingsome other thing。类成员与对象实例一起存储,但局部变量仅在当前范围内定义。

票数 4
EN

Stack Overflow用户

发布于 2012-11-14 14:44:15

不,不应该。因为PHP可以动态地计算成员名称,所以这一行

代码语言:javascript
运行
复制
$this->$_data

引用类成员,其名称在局部$data变量中指定。请考虑以下内容:

代码语言:javascript
运行
复制
class ProductModel
{

    var $_data = null; <--- defined here

    function test() 
    {
       $member = '_data';
       $this->$member = <--- here you access $this->_data, not $this->member
    }

}
票数 1
EN

Stack Overflow用户

发布于 2012-11-14 14:46:59

var $_data定义了一个类变量,$this->_data访问它。

如果设置为$this->$foo,则表示其他含义,就像$$foo一样:如果设置为$foo = 'bar',则这两个表达式的计算结果分别为$this->bar$bar

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

https://stackoverflow.com/questions/13374137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档