1

请看下面的代码函数 isInMatchingSet(Card $card) 正在使用 "card $card" 通常我在编码时看到 "$one,$two" 从来没有像 "Card" 这样的静态值那么这里的卡是什么?我猜它的类名。我找不到一个很好的解释,所以我想在这里问。

<?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());
    }
}
4

1 回答 1

4

这称为类型提示。它是在 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) {
}
于 2013-10-24T13:51:17.023 回答