2016-10-10 18 views
6

Tôi đang thực hiện một giao diện Iterator và nếu tôi thực hiện nó trở vô hướng (sau khi tham khảo http://php.net/manual/en/class.iterator.php), tôi đã nhận lỗi này:PHP7: không nên khai báo kiểu trả về vô hướng chấp nhận số nguyên?

TypeError: Return value of Collection::key() must be an instance of scalar, integer returned

Việc thực hiện lớp:

class Collection implements \Iterator 
{ 
    public function key(): \scalar 
    { 
     return key($this->colecao); 
    } 
    // other methods implementations... 
} 

Theo PHP tham chiếu, số nguyên phải được coi là giá trị vô hướng (http://php.net/manual/en/migration70.new-features.php):

Scalar type declarations come in two flavours: coercive (default) and strict. The following types for parameters can now be enforced (either coercively or strictly): strings (string), integers (int), floating-point numbers (float), and booleans (bool).

Có một số sai lầm trong mã của tôi của bạn nó sẽ là một lỗi?

Cảm ơn bạn đã giải thích!

+0

'khóa chức năng công khai(): int' là những gì bạn cần. Bạn phải xác định loại vô hướng nó trả về. –

+0

Các loại trả lại chỉ có thể là http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.types Không có điều gì như vô hướng mà tôi đã nghe nói về – RiggsFolly

+0

Các loại được hiển thị trong tài liệu PHP không phải là loại thực sự mà bạn có thể sử dụng trong mã, chúng chỉ có nghĩa là mô tả cho người đọc của con người. Ví dụ. không có loại có tên 'hỗn hợp', nó chỉ có nghĩa là hàm có thể trả về nhiều loại. – Barmar

Trả lời

5

PHP không có loại được gọi là \scalar. PHP chỉ hỗ trợ các loại those. Và loại \scalar của bạn trông giống như là một lớp khác.

Các vấn đề liên quan