美元符号在PHP中意味着什么?

时间:2011-09-23 11:03:54

标签: php oop

美元符号在PHP中意味着什么?我有这段代码:

<?php
  class Building {
    public $number_of_floors = 5;
    private $color;

    public function __construct($paint) {
      $this->color = $paint;
    }

    public function describe() {
      printf('This building has %d floors. It is %s in color.', 
        $this->number_of_floors, 
        $this->color
      );
    }
  }

  $bldgA = new Building('red');

  $bldgA->describe();
?>

似乎$表示如下变量:

$number_of_floors
$color

但是当我看到以下情况时,我感到困惑:

$bldgA->describe();
$bldgA->number_of_floors;

为什么在这些变量之前没有美元符号?

7 个答案:

答案 0 :(得分:18)

你是对的,$是变量。但是在类实例中,你不再使用$属性,因为PHP会解释,这可能会导致错误。例如,如果您使用

$bldgA->$number_of_floors;

这不会返回对象的$ number_of_floors属性,但PHP会首先查看$ number_of_floors的值,比如说3,所以上一行将是

$bldgA->3;

这会给你一个错误

答案 1 :(得分:3)

$是在PHP中引用变量的方法。 PHP中的变量是动态类型的,这意味着它们的类型取决于分配给它们的内容。以下是PHP手册中关于 variables 的页面。

$ a =“这是一个字符串”;

$ b = 1; //这是一个int

$ bldgA = new Building('red'); // bldgA是一个变量和一个构建类的对象(也就是一个实例)。

$ bldgA-&GT;描述(); //这调用describe(),它是类Building的成员函数(记住$ bldgA被声明为类Building的对象)

$ bldgA-&GT; number_of_floors; // number_of_floors是类Building的数据成员。您可以将其视为类中的变量,但由于它是具有固定名称的类的一部分,因此您不会使用$引用它。

答案 2 :(得分:2)

$bldgA = new Building('red');

在这种情况下,$ bldgA是一个对象。

$bldgA->describe();

从对象$ bldgA

中调用函数describe()
$bldgA->number_of_floors;

从对象$ bldgA

中访问变量number_of_floors

但你真的要看看php.net/manual/en/language.oop5.basic.php

答案 3 :(得分:0)

是的,这是带有指定类的实例的变量。当它反对时,你就像这样调用/获取参数。请阅读PHP中的OOP。它对您来说非常方便,可以帮助您了解它是如何工作的:)

答案 4 :(得分:0)

$ bldgA是Building Building

的变量

因此您可以使用$ Building-&gt; function_name

来访问类功能

示例:

$foo = $bldgA->describe();

$ number_of_floors是类

中的变量

答案 5 :(得分:0)

$bldgA->number_of_floors;不调用局部变量,而是调用类的属性(它类似于类定义的局部变量部分)。

但是可以调用$bldgA->$property_name;,其中$ property_name是要调用的属性的名称。这被称为变量变量,你可能应该在之后了解,你已经掌握了OOP基础知识。

答案 6 :(得分:-1)

编写$bldgA = new Building('red');时,为变量$bldgA分配一个新创建的类Building对象。对象是一种可能的变量。

通常,当您看到$时,它始终引用变量。 $bldgA->number_of_floors;应理解为:访问变量$bldgA

中对象的属性