2011-09-23 184 views
10

美元符号在PHP中的含义是什么?我有这样的代码:美元符号在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; 

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

+10

嗯,也许该再次阅读[PHP语言参考](http://php.net/manual/en/langref.php)... –

+1

谷歌和阅读PHP OOP的基础知识。 – Sarfraz

+0

http://www.php.net/manual/en/language.oop5.basic.php – JJJ

回答

12

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

$bldgA->$number_of_floors; 

这将不会返回对象的$ number_of_floors财产,但PHP会先看看$ number_of_floors的价值,让我们说3实例,因此前一行将

$bldgA->3; 

这会给你一个错误

+1

好的,容易理解的解释。 – Anson

0

是的,这是可变的与指派它的类的实例。而当它反对时,你就是这样调用/获取参数。请阅读PHP中的OOP。它可以非常方便你,并帮助你了解它是如何工作:)

+0

错误。一个类不能被分配,只能是一个类的一个实例。 – markus

3

$是引用PHP中的变量的方式。 PHP中的变量是动态类型的,这意味着它们的类型由分配给它们的内容决定。这里是关于PHP手册中关于variables的页面。

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

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

$ bldgA = new Building('red'); // bldgA是类Building的变量和对象(又名实例)。

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

$ bldgA-> number_of_floors; // number_of_floors是类Building的数据成员。你可以把它看作一个类中的变量,但由于它是类名的一部分,所以你不要用$来引用它。

0

的$ bldgA是类建筑

,所以你可以通过使用$ Building-访问类的函数变量>函数名

例如:

$foo = $bldgA->describe(); 

的$ number_of_floors是变量内部的变量

+0

$ bldgA不只是一个变量 – peko

+0

是的对不起,我试图让他很容易理解 –

-1

在编写$bldgA = new Building('red');时,您将变量$bldgA指定为新创建的012类对象。对象是一种可能的变量类型。

一般而言,当您看到$时,它总是指变量。 $bldgA->number_of_floors;应阅读:访问对象的属性变量$bldgA

2
$bldgA = new Building('red'); 

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

$bldgA->describe(); 

调用函数描述()从对象$ bldgA

$bldgA->number_of_floors; 

存取权限从对象$ bldgA

变量number_of_floors,但你真的应该看看php.net/manual/en/language.oop5.basic.php

0

$bldgA->number_of_floors;不调用一个局部变量,但一类的属性(这就像类定义的局部变量部分)。

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

相关问题