请解释此函数中的参数

时间:2013-10-24 13:49:47

标签: php

请看下面的代码函数isInMatchingSet(Card $ card) 正在拿“卡$卡”通常我看到“$ one,$ two” 当我编码永远不会像“卡”这样的静态值 卡什么在这里?我在猜它的类名。 我无法找到这方面的好解释,所以我想 问这里。

<?php

/**
 * Models an individual card.
 */
class Card
{
    /**
     * @var string
     */
    private $number;

    /**
     * @var string
     */
    private $suit;

    /**
     * @param string $number
     * @param string $suit
     */
    public function __construct($number, $suit)
    {
        $this->number = $number;
        $this->suit   = $suit;
    }

    /**
     * @return string
     */
    public function getNumber()
    {
        return $this->number;
    }

    /**
     * @return string
     */
    public function getSuit()
    {
        return $this->suit;
    }

    /**
     * Returns true if the given card is in the same set
     * @param Card $card
     * @return bool
     * @assert (new Card(3, 'h'), new Card(3, 's')) == true
     * @assert (new Card(4, 'h'), new Card(3, 's')) == false
     */
    public function isInMatchingSet(Card $card)
    {
        return ($this->getNumber() == $card->getNumber());
    }
}

1 个答案:

答案 0 :(得分:4)

这称为type hinting。它是在PHP 5中引入的。

  

PHP 5引入了类型提示。函数现在能够强制参数为对象(通过在函数原型中指定类的名称),接口,数组(自PHP 5.1起)或可调用(自PHP 5.4起)。但是,如果将NULL用作默认参数值,则允许将其作为后续调用的参数。

示例:

// Array — expects an array
function test(Array $array) {
}

// Interface — expects an object of a class implementing the given interface
function test(Countable $interface) {
}

// Class — expects an object of that class (or any sub-classes)
function test(Exception $object) {
}

// Callable  — expects any callable object
function test(callable $callable) {
}