Khai báo kiểu dữ liệu của biến trong php7

Trong php7 cho phép ta khai báo kiểu dữ liệu cho biến. Cho em hỏi là giữa việc khai báo kiểu dữ liệu cho biến, và việc khai báo phụ thuộc vào giá trị thì lợi hại của chúng nó như thế nào ạ. và hiện nay khi dùng php mọi người sử dụng cách nào ạ

Mình trích đoạn code của Zend Framework

Bạn để ý biến $value, nó có rất nhiều kiểu: Select, array. Tuỳ vào giá trị của $flag$value sẽ là Select hoặc array.

Khi đó client chỉ thấy method signature duy nhất. PHP hay Dynamic Language rất hay sử dụng kiểu này để cho cú pháp đơn giản, ngắn gọn.

public function values($values, $flag = self::VALUES_SET)
    {
        if ($values instanceof Select) {
            if ($flag == self::VALUES_MERGE) {
                throw new Exception\InvalidArgumentException(
                    'A Zend\Db\Sql\Select instance cannot be provided with the merge flag'
                );
            }
            $this->select = $values;
            return $this;
        }
        if (! is_array($values)) {
            throw new Exception\InvalidArgumentException(
                'values() expects an array of values or Zend\Db\Sql\Select instance'
            );
        }
        if ($this->select && $flag == self::VALUES_MERGE) {
            throw new Exception\InvalidArgumentException(
                'An array of values cannot be provided with the merge flag when a Zend\Db\Sql\Select instance already '
                . 'exists as the value source'
            );
        }
        if ($flag == self::VALUES_SET) {
            $this->columns = $this->isAssocativeArray($values)
                ? $values
                : array_combine(array_keys($this->columns), array_values($values));
        } else {
            foreach ($values as $column => $value) {
                $this->columns[$column] = $value;
            }
        }
        return $this;
    }

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?