Gợi ý loại tài nguyên PHP

tôi đồng ý. Một số tài nguyên có thể biến mất trong tương lai nhưng những tài nguyên khác, như
các luồng đã mở, hoàn toàn không lỗi thời

Vì 'tài nguyên' không đủ cụ thể. Điều gì về việc bao gồm các tài nguyên
gõ theo một cách nào đó?
Chỉ cần thay thế dấu cách bằng dấu gạch dưới [e. g. 'persistent_stream']

Trân trọng

François

của Bob Weinand — xem nguồn

chưa đọc

tôi 13. 11. 2015 tháng 11. 57 schrieb François Laupretre francois@php. net

Xin chào,

Lê 13/11/2015 04. 30, Stanislav Malyshev a écrit

Xin chào

Lý do cho điều này là loại tài nguyên là lỗi thời từ một
thời đại mà PHP không có các đối tượng, nhưng vẫn cần phải chắc chắn
các loại dữ liệu mờ. Loại tài nguyên là loại chỉ tồn tại đối với
Tôi nghĩ lý do cụ thể hơn không phải là loại tài nguyên đã lỗi thời, mà là
tài nguyên đó không thực sự là một loại - đó là một tập hợp các loại. mysql
kết nối là một tài nguyên và tệp là một tài nguyên, nhưng chúng chắc chắn
không thể thay thế cho nhau. Vì vậy, nhập một giá trị là "tài nguyên" sẽ không đạt được
bạn nhiều

tôi đồng ý. Một số tài nguyên có thể biến mất trong tương lai nhưng những tài nguyên khác, chẳng hạn như luồng đã mở, hoàn toàn không lỗi thời

Vì 'tài nguyên' không đủ cụ thể. Điều gì về việc bao gồm loại tài nguyên theo một cách nào đó? . g. 'persistent_stream']

Trân trọng

François

Giải pháp thay thế là thay thế tài nguyên bằng các đối tượng thích hợp, không có phương thức và thuộc tính công khai
Sau đó, chúng tôi có thể tích hợp nó vào hệ thống phân cấp đối tượng của mình theo cách rất nhẹ nhàng với cách nhập chính xác

Có cú pháp đặc biệt không thực sự cải thiện nhiều

Bob

của Ben Scholzen 'DASP RiD' — xem nguồn

chưa đọc

Giải pháp thay thế là thay thế tài nguyên bằng các đối tượng thích hợp, không có phương thức và thuộc tính công khai
Sau đó, chúng tôi có thể tích hợp nó vào hệ thống phân cấp đối tượng của mình theo cách rất nhẹ nhàng với cách nhập chính xác

Có cú pháp đặc biệt không thực sự cải thiện nhiều

Bob

Tôi vừa xem lại cái này, và tôi không biết làm thế nào tôi có thể bỏ lỡ cái này
quá lâu, nhưng chúng ta đã có SplFileObject. Nó sẽ không có ý nghĩa để
hãy để fopen[] và các chức năng bổ sung sử dụng?

--
Ben Scholzen 'DASPRiD'
Thành viên nhóm đánh giá cộng đồng. thư @ dasprids. de
Khung Zend. http. //www. dasprids. de

của Rowan Collins — xem nguồn

chưa đọc

Ben Scholzen 'DASPRiD' đã viết vào ngày 23/11/2015 01. 57

Phương án thay thế là thay thế các tài nguyên bằng các đối tượng thích hợp, mà không cần
Phương thức và thuộc tính công khai
Sau đó, chúng tôi có thể tích hợp nó vào hệ thống phân cấp đối tượng của mình theo cách rất
cách nhẹ nhàng với kiểu gõ thích hợp

Có cú pháp đặc biệt không thực sự cải thiện nhiều

Bob

Tôi vừa xem lại cái này, và tôi không biết làm thế nào tôi có thể bỏ lỡ cái này
quá lâu, nhưng chúng tôi đã có SplFileObject. nó sẽ không có ý nghĩa
để cho fopen[] và các chức năng bổ sung sử dụng?

Tôi tin rằng người chặn đang gấp rút chuyển đổi các tài nguyên hiện có thành
các đối tượng là có các chức năng như is_resource[] và getttype[]
sẽ bắt đầu cư xử khác đi

Các chức năng chấp nhận tài nguyên làm tham số có thể dễ dàng được
được mở rộng để chấp nhận tài nguyên hoặc đối tượng, nhưng bất kỳ thứ gì
hiện đang trả về một tài nguyên không thể thay đổi mà không khai báo
phá vỡ sự thay đổi. Và nếu bạn đang thay đổi fgets nhưng không thay đổi fopen, bạn có thể
cũng như chỉ cần xây dựng một API mới, mà SplFileObject đã có hầu hết
[vì một số lý do, nó dường như bao gồm fputcsv chứ không phải fputs]

Trân trọng,

Rowan Collins
[IMSoP]

của Davey Shafik — xem nguồn

chưa đọc

Xin chào,

Vào Thứ Hai, ngày 23 tháng 11 năm 2015 lúc 10. 30 giờ sáng, thanh lương trà Rowan Collins. collins@gmail. com
đã viết

Ben Scholzen 'DASPRiD' đã viết vào ngày 23/11/2015 01. 57

Phương án thay thế là thay thế các tài nguyên bằng các đối tượng thích hợp, mà không cần
Phương thức và thuộc tính công khai
Sau đó, chúng tôi có thể tích hợp nó vào hệ thống phân cấp đối tượng của mình theo cách rất
cách nhẹ nhàng với kiểu gõ thích hợp

Có cú pháp đặc biệt không thực sự cải thiện nhiều

Bob

Tôi vừa xem lại cái này, và tôi không biết làm thế nào tôi có thể bỏ lỡ cái này
quá lâu, nhưng chúng ta đã có SplFileObject. Sẽ không có ý nghĩa gì nếu để
fopen[] và chức năng bổ sung sử dụng?

Tôi tin rằng người chặn đang gấp rút chuyển đổi các tài nguyên hiện có thành
đối tượng là có các chức năng như is_resource[] và getttype[] mà
sẽ bắt đầu cư xử khác đi

Các chức năng chấp nhận tài nguyên làm tham số có thể dễ dàng được mở rộng
để chấp nhận tài nguyên hoặc đối tượng, nhưng bất kỳ thứ gì hiện đang trả về
một tài nguyên không thể được thay đổi mà không tuyên bố thay đổi vi phạm. Và nếu
bạn đang thay đổi fgets chứ không phải fopen, bạn cũng có thể xây dựng một cái mới
API mà SplFileObject đã có hầu hết [vì lý do nào đó, nó xuất hiện
để bao gồm fputcsv chứ không phải fputs]

Trân trọng,

Rowan Collins
[IMSoP]

Làm thế nào đây là một thay đổi đột phá?
đối tượng tài nguyên là từ một hàm hiện trả về một tài nguyên [e. g
imagecreate[]] và bạn không thể làm gì với tài nguyên ngoại trừ chuyển vào
những thứ mong đợi tài nguyên. Nếu thay vào đó, chúng trả về một đối tượng và mọi
chức năng hiện đang mong đợi một tài nguyên hiện đang mong đợi loại đó
đối tượng tài nguyên, nó chỉ có thể hoạt động…

Có thể tạo một [có thể trống, nhưng có thể hữu ích]
giao diện mà tất cả các đối tượng tài nguyên mới thực hiện, nghĩa là
is_resource[]gettype[] có thể kiểm tra điều đó trong tương lai và trả lại một
kết quả BC [và nếu cần, hãy để phần triển khai hiện tại ở đó dưới dạng
đường dẫn mã cho tiện ích mở rộng tùy chỉnh có thể]. Bạn cũng có thể gõ gợi ý đó
giao diện, thay thế một cách minh bạch gợi ý loại được đề xuất hoặc
thay vì

Nhưng tôi chắc chắn muốn thấy một đối tượng CurlResource hoặc ImageResource
thay vì gợi ý loại tài nguyên. Nghĩ

lớp CurlResource thực hiện Tài nguyên { }
hàm makeRequest[CurlResource $curl] { }
chức năng serializeResource[Tài nguyên $resource] { }
gettype[$myResource] == 'tài nguyên'
is_resource[$myResource] == true
[$myResource instanceof CurlHandler] == true

Điều duy nhất tôi thấy gây tranh cãi, thực ra là, fopen[]0 — nếu điều đó
trả về false, duy trì BC hay true?

của Rowan Collins — xem nguồn

chưa đọc

Davey Shafik viết ngày 23/11/2015 16. 17

Làm thế nào đây là một thay đổi đột phá?
đối tượng tài nguyên là từ một hàm hiện đang trả về một tài nguyên
[e. g. imagecreate[]], và bạn không thể làm gì với tài nguyên ngoại trừ
chuyển vào những thứ mong đợi tài nguyên. Nếu thay vào đó họ trả lại một
đối tượng và mọi chức năng hiện đang mong đợi một tài nguyên
mong đợi loại đối tượng tài nguyên đó, nó có thể hoạt động…

Trong các chức năng đó thì không sao, nhưng có một số "meta"
các chức năng có thể cho biết sự khác biệt giữa một tài nguyên và một
đối tượng và chúng có thể được sử dụng trong mã hiện có để xử lý lỗi hoặc
hành vi chuyển đổi - e. g

chuyển đổi [ gettype[$file] ]
{
trường hợp 'chuỗi'
// code để mở một handle mới
nghỉ;
trường hợp 'tài nguyên'
// code để sử dụng handle mở
nghỉ;
trường hợp 'đối tượng'
nếu [ $file instanceOf MyFileWrapperInterface ] //
nghỉ;
vỡ nợ
// lỗi
}

Có thể tạo một [có thể trống, nhưng có thể hữu ích]
giao diện mà tất cả các đối tượng tài nguyên mới thực hiện, nghĩa là
is_resource[]gettype[] có thể kiểm tra điều đó trong tương lai và
trả về kết quả BC [và nếu cần, hãy để nguyên cách triển khai hiện tại
trong đó có thể là một đường dẫn mã cho các tiện ích mở rộng tùy chỉnh]. Bạn cũng có thể
gõ gợi ý tắt giao diện đó, hoặc thay thế một cách minh bạch
gợi ý loại đề xuất, hoặc thay vì

Điều này chắc chắn có ích, nhưng bạn vẫn phải phá vỡ thứ gì đó, bởi vì
hiện tại is_resource[]fopen[]0 loại trừ lẫn nhau và
gettype[] chỉ có thể trả về một chuỗi, vì vậy bạn phải ngắt chuỗi của ai đó
mã ở đâu đó. [Cue xkcd truyện tranh "mọi thay đổi đều phá vỡ dòng chảy của ai đó";
nhưng tôi nghĩ rằng ví dụ trên chứng minh rằng đây là một điều không tầm thường
nghỉ. ]

Nhưng tôi chắc chắn muốn xem CurlResource hoặc ImageResource
đối tượng thay vì gợi ý loại tài nguyên

Chắc chắn đồng ý ở đây

Điều duy nhất tôi thấy gây tranh cãi thực ra là, fopen[]0 — nên
trả về sai, duy trì BC hay đúng?

Tôi nghĩ sẽ thật kỳ lạ nếu nó không trả về giá trị đúng - nếu không thì trong 10
nhiều năm nữa, sẽ có một ghi chú kỳ lạ trong sách hướng dẫn nói rằng
"is_object[$var]. trả về true nếu $var là một đối tượng, trừ khi nó là một trong
các loại nội bộ sau đây. " gettype[] trả lại 'tài nguyên' cho một
đối tượng sẽ gây ngạc nhiên tương tự

Gây tranh cãi hơn là cách is_resource[] nên cư xử;
tài nguyên được chuyển đổi, dù sao thì nó cũng có thể không được dùng nữa, tôi đoán vậy

Trân trọng,

Rowan Collins
[IMSoP]

của Ben Scholzen 'DASP RiD' — xem nguồn

chưa đọc

Tôi tin rằng người chặn đang gấp rút chuyển đổi các tài nguyên hiện có thành
các đối tượng là có các chức năng như is_resource[] và getttype[]
sẽ bắt đầu cư xử khác đi

Có một trình chặn khác. SplFileObject hiện không có fopen[]1
phương pháp, mà chắc chắn nên được thực hiện. Hiện tại nó dựa vào
bị phá hủy để đóng tài nguyên nội bộ. Trường hợp chéo
tài liệu tham khảo, không có cách nào để đóng xử lý tệp một cách rõ ràng

Tôi có thể đề xuất triển khai fopen[]1 trong SplFileObject ngay bây giờ để mang nó
phù hợp với các chức năng đơn giản?
trên một SplFileObject và e. g. một fopen[]4, fopen[]5 hoặc cách gọi tương tự là
thực hiện trên đối tượng, nó ném là một ngoại lệ?

--
Ben Scholzen 'DASPRiD'
Thành viên nhóm đánh giá cộng đồng. thư @ dasprids. de
Khung Zend. http. //www. dasprids. de

của Rowan Collins — xem nguồn

chưa đọc

Có một trình chặn khác. SplFileObject hiện không có fopen[]1
phương pháp, mà chắc chắn nên được thực hiện. Hiện tại nó dựa vào
bị phá hủy để đóng tài nguyên nội bộ. Trường hợp chéo
tài liệu tham khảo, không có cách nào để đóng xử lý tệp một cách rõ ràng

Sử dụng bộ đếm tham chiếu và hàm hủy làm cơ chế giải phóng tài nguyên là một mẫu OO rất phổ biến [đôi khi được gọi là "RAII"] và cũng được sử dụng ở những nơi khác trong PHP, e. g. PDO

Điều đó có nghĩa là bất cứ nơi nào bạn có tham chiếu đến đối tượng, bạn thực sự có thể sử dụng nó, thay vì phải kiểm tra xem nó có bị đóng ở nơi khác hay không và tiết kiệm nhu cầu dùng thử. cuối cùng khối ở nhiều nơi

Nếu bạn muốn một tham chiếu yếu, bạn có thể bọc nó trong một thùng chứa ủy quyền, với hành vi "đóng và bắt đầu ném ngoại lệ" mà bạn đang theo đuổi. chỉ cần có một thành viên riêng cho tài nguyên thực và chỉ chuyển qua các lệnh gọi phương thức khi nó không rỗng

Cũng lưu ý rằng các tham chiếu vòng tròn không phải là một vấn đề lớn, vì PHP đã có một trình thu gom rác chuyên dụng được tích hợp sẵn trong một thời gian và bạn thường có thể hạn chế sử dụng chúng với thiết kế cẩn thận

Loại tài nguyên PHP là gì?

Trong PHP, Tài nguyên là một loại dữ liệu đặc biệt đề cập đến bất kỳ tài nguyên bên ngoài nào . Một biến tài nguyên hoạt động như một tham chiếu đến nguồn dữ liệu bên ngoài như luồng, tệp, cơ sở dữ liệu, v.v. PHP sử dụng các hàm liên quan để tạo các tài nguyên này.

Gợi ý kiểu trong PHP là gì?

Gợi ý loại là khái niệm cung cấp các gợi ý để hoạt động cho loại đối số dự kiến . Ví dụ: Nếu chúng ta muốn thêm một số nguyên trong khi viết hàm cộng, chúng ta đã đề cập đến kiểu dữ liệu [trong trường hợp này là số nguyên] của tham số.

Gợi ý kiểu được thêm vào PHP khi nào?

Vào tháng 5 năm 2010 hỗ trợ cho gợi ý loại vô hướng đã được thêm vào thân PHP.

Gợi ý kiểu trong laravel là gì?

Nói một cách đơn giản, gợi ý kiểu có nghĩa là cung cấp gợi ý để hàm chỉ chấp nhận kiểu dữ liệu đã cho . Nói một cách kỹ thuật, chúng ta có thể nói rằng Gợi ý kiểu là phương pháp mà chúng ta có thể buộc chức năng chấp nhận kiểu dữ liệu mong muốn. Trong PHP, chúng ta có thể sử dụng gợi ý kiểu cho Đối tượng, Mảng và kiểu dữ liệu có thể gọi được.

Chủ Đề