Improve incompatible trait property error message
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- C
- Star
- 40.4k
- Fork
- 8.1k
- Merge trung bình
- 2 ngày 13 giờ
- Pull request đã merge (30 ngày)
- 96
Mô tả
Description
The following code results in a PHP Fatal Error:
trait FooTrait
{
private array $options = [];
}
class Foo
{
use FooTrait;
public function __construct(private array $options = []) {}
}
The error thrown is
PHP Fatal error: Foo and FooTrait define the same property ($options) in the composition of Foo. However, the definition differs and is considered incompatible.
However, the same thing defined in the class instead of in the constructor works:
trait FooTrait
{
private array $options = [];
}
class Foo
{
use FooTrait;
private array $options = [];
}
As does the same thing, but without setting a default value:
trait FooTrait
{
private array $options;
}
class Foo
{
use FooTrait;
public function __construct(private array $options) {}
}
This seems to be ane rror
PHP Version
PHP 8.1.29 to PHP 8.4.0-dev
Operating System
MAC OSX 14.7
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Issue không xác định tệp mã nguồn hoặc test nào. Hãy tái hiện các ví dụ trên các phiên bản PHP được liệt kê, sau đó truy vết việc hợp thành các thuộc tính của trait với các thuộc tính được promote trong constructor; công việc được xem là hoàn tất khi hành vi đối với các thuộc tính không tương thích được sửa và được bao phủ bởi một regression test.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- php
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 35/100