深入PHP(第三版)——对象基础之使用方法

喜欢而已 提交于 2020-01-28 10:13:32

博客来自《深入PHP 面向对象、模式与实践》第三版

使用方法

属性可以让对象存储数据,类方法则可以让对象执行任务。方法是在类中声明的特殊函数。方法声明类似于函数声明。function关键字在方法名之前,方法名之后圆括号中的是可选的参数列表。方法体用大括号括起来。

public function myMethod($argument,$another)
{
···
···
}

和函数不同的是,方法必须在类中声明。它们也可以接收限定词,包括可见性关键字。和属性一样,方法可以被声明public、protected或private。将方法声明为public,就可以在当前对象外调用该方法。如果在方法声明中省略了可见性关键字,那么方法将被隐式声明为public。

在大多数情况下,我们可以使用->连接对象变量和方法名来调用方法,调用方法时必须使用一对圆括号

class ShopProduct{
    public $title="default product";
    public $producerMainName="main name";
    public $producerFirstName="first name";
    public $price=0;

    function getProducer()
    {
        return "{$this->producerFirstName}"."{$this->producerMainName}";
    }
}
include '3.1.php';

$product1=new ShopProduct();
//调用类方法
print $product1->getProducer();

我们向ShopProduct类中增加了getProducer()方法。注意声明方法时没有指定可见性关键字,这是会默认为public,以供外面调用。

我们在该方法中使用了一个特性。$this伪变量把类指向一个对象实例。比如在本例子中$this就是“当前实例”的意思。$this->producerFirstName就是当前实例的producerFirstName属性。

创建构造方法

创建对象时,构造方法(构造器)会自动调用。构造方法可以用来确保必要的属性设置,并完成任何需要准备的工作。在PHP5之前的版本中,构造方法使用和所在类相同的名字,因此ShopProduct类可以使用ShopProduct()方法作为它的构造方法。虽然在PHP5中是有效的,但是还是建议把构造方法命名为__construct()。下面是ShopProduct类定义的构造方法

class ShopProduct{
    public $title;
    public $producerMainName;
    public $producerFirstName;
    public $price=0;

    function __construct($title,$producerMainName,$producerFirstName,$price)
    {
        $this->title=$title;
        $this->producerMainName=$producerMainName;
        $this->producerFirstName=$producerFirstName;
        $this->price=$price;
    }

    function getProducer()
    {
        return "{$this->producerFirstName}"."{$this->producerMainName}";
    }
}

在这里插入图片描述
在上例中我们把之前的初始化功能集成到类中,以减少代码中的重复。当使用new操作符创建对象时,__construct方法会被调用。
在这里插入图片描述
任何给定的参数都将传递给构造方法。因此在我们的例子中,传递了商品名称、生产者姓、名和商品价格到构造方法。构造方法使用伪变量$this给对象的每个属性赋值。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!