- Trong PHP, từ khóa Final chỉ áp dụng cho lớp và phương thức lớp. Chúng tôi không thể khai báo là Final trong PHP
- Vì vậy, nếu chúng ta khai báo phương thức lớp là Cuối cùng thì phương thức đó không thể được ghi đè bởi lớp con
- Tương tự như phương thức nếu chúng ta khai báo lớp là Final thì lớp đó không thể mở rộng được nữa
ví dụ 1
đầu ra
chưa đọc
Xin chào nội bộ,
Java hỗ trợ từ khóa "cuối cùng" trước một biến để xác định rằng
biến không bao giờ thay đổi nó tham chiếu. Nếu tôi khai báo một biến là "cuối cùng", tôi
chỉ có thể khởi tạo nó một lần, sau đó tôi không thể thay đổi nó sau đó [nhưng tôi có thể
thao tác cá thể, không có vấn đề]
Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy?
số $ cuối cùng = 123;
$số = 456; . bạn thay đổi thay đổi các biến cuối cùng
đối tượng $ cuối cùng = stdClass mới;
$object->allowed = true;
Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến
không thể cập nhật trực tiếp [tham khảo mới]. Mà làm cho dễ dàng để xác định
khi một biến có thể sửa đổi được hay không
Nó có hợp lệ cho một RFC không?
- Nó có thể sử dụng từ khóa "cuối cùng";
- Nó không phải là BC;
Tôi cũng nghĩ rằng một biến cuối cùng có thể hữu ích để tạo ra một số nội bộ
cải tiến về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Ý tôi là,
vì biến không thể sửa đổi, nên nó không cần phải là "linh hoạt"
gõ nội bộ [tôi đoán đó là một zval, phải không?]
Thẩm quyền giải quyết. https. //github. com/kalessil/phpinspectionsea/issues/363
--
David Coleues
chưa đọc Chào David 2017-06-28 18. 10 GMT+02. 00 David Rodrigues david. proweb@gmail. com Xin chào nội bộ, Java hỗ trợ từ khóa "cuối cùng" trước một biến để xác định rằng Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy? Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1] số $ cuối cùng = 123; đối tượng $ cuối cùng = stdClass mới; Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến Nó có hợp lệ cho một RFC không? Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân] Tôi cũng nghĩ rằng một biến cuối cùng có thể hữu ích để tạo ra một số nội bộ Thẩm quyền giải quyết. https. //github. com/kalessil/phpinspectionsea/issues/363 -- [1] http. //php. ròng/hằng số -- Kalle Sommer Nielsen chưa đọc 2017-06-28 18. 59 GMT+02. 00 Kalle Sommer Nielsen kalle@php. net Chào David 2017-06-28 18. 10 GMT+02. 00 David Rodrigues david. proweb@gmail. com Xin chào nội bộ, Java hỗ trợ từ khóa "cuối cùng" trước một biến để xác định rằng Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy? Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1] Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng Trân trọng, Niklas điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật số $ cuối cùng = 123; đối tượng $ cuối cùng = stdClass mới; Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến Nó có hợp lệ cho một RFC không? Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân] Tôi cũng nghĩ rằng một biến cuối cùng có thể hữu ích để tạo ra một số nội bộ Thẩm quyền giải quyết. https. //github. com/kalessil/phpinspectionsea/issues/363 -- [1] http. //php. ròng/hằng số -- Kalle Sommer Nielsen chưa đọc 28-06-2017 19. 37 GMT+02. 00 Niklas Keller me@kelunik. com Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng À vâng, tất nhiên, lời xin lỗi của tôi -- Kalle Sommer Nielsen chưa đọc 28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. net Chào David Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1] . Không trên thực tế. . [ Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Trong khi các hằng số là thành viên của lớp [hoặc toàn cầu], một biến cuối cùng chỉ là một Chẳng hạn [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi chức năng ghi [tin nhắn $ cuối cùng] { echo $ tin nhắn; Hoặc sau đó hàm RandomNumber [] {
biến không bao giờ thay đổi nó tham chiếu. Nếu tôi khai báo một biến là "cuối cùng", tôi
chỉ có thể khởi tạo nó một lần, sau đó tôi không thể thay đổi nó sau đó [nhưng tôi có thể
thao tác cá thể, không có vấn đề]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]
$số = 456; . bạn thay đổi thay đổi các biến cuối cùng
$object->allowed = true;
không thể cập nhật trực tiếp [tham khảo mới]. Mà làm cho dễ dàng để xác định
khi một biến có thể sửa đổi được hay không
rằng đây phải là một RFC cho một từ khóa chỉ đọc nếu có bất cứ điều gì
cải tiến về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Ý tôi là,
vì biến không thể sửa đổi, nên nó không cần phải là "linh hoạt"
gõ nội bộ [tôi đoán đó là một zval, phải không?]
David Coleues
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/tham chiếu ngôn ngữ/từ khóa/chỉ đọc
Trân trọng,
kalle@php. net
cái này
biến không bao giờ thay đổi nó tham chiếu. Nếu tôi khai báo một biến là "cuối cùng",
I
chỉ có thể khởi tạo nó một lần, sau đó tôi không thể thay đổi nó sau đó [nhưng tôi
có thể
thao tác cá thể, không có vấn đề]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
các đối tượng,
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]
$số = 456; . bạn thay đổi thay đổi các biến cuối cùng
$object->allowed = true;
không thể cập nhật trực tiếp [tham khảo mới]. Mà làm cho dễ dàng để
nhận dạng
khi một biến có thể sửa đổi được hay không
rằng đây phải là một RFC cho một từ khóa chỉ đọc nếu có bất cứ điều gì
cải tiến về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Tôi
nghĩa là,
vì biến không thể sửa đổi, nên nó không cần phải là "linh hoạt"
gõ nội bộ [tôi đoán đó là một zval, phải không?]
David Coleues
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham khảo/từ khóa/chỉ đọc
Trân trọng,
kalle@php. net
Trân trọng,
kalle@php. net
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
biến bị chặn để viết lại và nó có thể được khởi tạo với một dữ liệu mới
nội dung mỗi khi ngữ cảnh đó được gọi [ví dụ:. một chức năng]
biến tham số, nhưng nó có thể nhận một giá trị mới mỗi khi tôi gọi
Chức năng này]
write["Xin chao"];
write["Thế giới"];
// Viết "Xin chào thế giới" trên đầu ra
số $ cuối cùng =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
tiếng vang $số;
// $number = mt_rand_again[];
}
số ngẫu nhiên[];
// Viết "0. 123"
số ngẫu nhiên[];
// Viết "0. 456"
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham khảo/từ khóa/chỉ đọc
--
David Coleues
chưa đọc
Walter Parker walterp@gmail. com
đã viết.
Không đổi có thể không phải là từ [hoặc ý tưởng] đúng, nhưng tôi đồng ý với
cải xoăn. Chúng ta nên sử dụng chỉ đọc làm từ khóa ở đây chứ không phải cuối cùng làm từ khóa
từ khóa. Chúng tôi có thể giữ các quy tắc phạm vi tương tự để những điều sau đây sẽ hoạt động
> hàm RandomNumber[] {
>
*chỉ đọc *$number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
2017-06-28 15. 46 GMT-03. 00 David Rodrigues david. proweb@gmail. com
28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. net
Chào David
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2].
Không trên thực tế. . [
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"Trong khi các hằng số là thành viên của lớp [hoặc toàn cầu], một biến cuối cùng chỉ là một
biến bị chặn để viết lại và nó có thể được khởi tạo với một dữ liệu mới
nội dung mỗi khi ngữ cảnh đó được gọi [ví dụ:. một chức năng]Chẳng hạn [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi
biến tham số, nhưng nó có thể nhận một giá trị mới mỗi khi tôi gọi
Chức năng này]chức năng ghi [tin nhắn $ cuối cùng] { echo $ tin nhắn;
write["Xin chao"];
write["Thế giới"];
// Viết "Xin chào thế giới" trên đầu raHoặc sau đó
hàm RandomNumber [] {
số $ cuối cùng =6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
tiếng vang $số;// $number = mt_rand_again[];
}
số ngẫu nhiên[];
// Viết "0. 123"
số ngẫu nhiên[];
// Viết "0. 456"
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
từ khóa/từ khóa/chỉ đọc--
David Coleues
--
David Coleues
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
hạng A {
chỉ đọc được bảo vệ $b;
hàm công khai __construct[] {
$this->b = 'C';
}
}
lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}
hàm công khai write[] {
$this->b = 'D';
}
}
$b = B mới;
$b->đọc[];
$b->write[];
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính, nếuAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
những người đã từng làm cho nó đến ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng nữa,
và đó thực sự là một sự phá vỡ BC cho bất cứ điều gì sử dụng sự phản chiếu và
ràng buộc phạm vi đóng] - Mảng và tài nguyên dưới dạng thuộc tính
- Các nhà xây dựng được đặt tên [Nhà máy]
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó - Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com
chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành nhiều hơn
ẩn ý
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTFTừ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốthạng A {
chỉ đọc được bảo vệ $b;hàm công khai __construct[] {
$this->b = 'C';
}
}lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}hàm công khai write[] {
$this->b = 'D';
}
}$b = B mới;
$b->đọc[];
$b->write[];--
Trân trọng,Kalle Sommer Nielsen
kalle@php. net
chưa đọc Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Vâng, sẽ có một số cú pháp mới mà thư viện sẽ không có Thêm cú pháp mới vào một ngôn ngữ có nghĩa là những người có Cập nhật thư viện để hỗ trợ cú pháp mới hoặc yêu cầu PR cho cú pháp đó Nói rằng thư viện có thể kiểm tra mã cho đến phiên bản trước Tôi có thể thấy điều đó sẽ gây khó chịu cho tác giả của những thư viện đó, snip - rất nhiều vấn đề kỹ thuật khó giải quyết Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập Chuẩn rồi. Tôi nghĩ rằng bất kỳ cuộc thảo luận nào mà không có ít nhất một số loại kế hoạch cho hoan hô chưa đọc Này Đan, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
biết, điều này sẽ không được hỗ trợ trong thư viện, nhưng đó không phải là
nghỉ BC
các thư viện kiểm tra mã dựa trên cú pháp hiện tại sẽ cần
chọn giữa
cú pháp mới đã được giới thiệu, nhưng không hỗ trợ mã sau này
vì họ rõ ràng không muốn phải đưa ra lựa chọn đó, nhưng nó
không phải là nghỉ BC
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
xử lý các vấn đề kỹ thuật để thực hiện điều này không có khả năng
làm việc hiệu quả
Đan
đã viết
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
chưa đọc
Xin chào
2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "define[]" là một hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch thì
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
cuộc gọi và "const" rất hạn chế mà không có lý do chính đáng
theo dõi sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong một
câu lệnh if khi thực tế bạn có thể CONCAT hai với hằng số được đặt là
2Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
là một phần của chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "xác định []" là một lệnh gọi hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch như sau
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
và "const" rất hạn chế mà không có lý do chính đáng
sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong câu lệnh if khi bạn
trên thực tế, có thể CONCAT hai với hằng số thiết lập
2 là một phần củaAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn cần nó là một biến trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Ngày 29 tháng 6 năm 2017 11. 05 giờ sáng, "lists@rhsoft. thư mạng. danh sách@rhsoft. net"
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
sau đó nếu bạn biết giá trị sẽ không đổi" và khi các hằng số dài
trong PHP là a] rất tốn kém và b] "const" giả vờ là thời gian biên dịch
có thể chứng minh là sai với mã mẫu của tôi rất tệ khi sử dụng
chậm, cả trong xác định và truy cập
đã viếtAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chưa đọc trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó Tôi không hiểu Mô hình tương đối phổ biến lớp Foo { Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/ Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
đã viết
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
David Coleues
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
0?Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
chưa đọc
Chào David
2017-06-28 18. 10 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Xin chào nội bộ,
Java hỗ trợ từ khóa "cuối cùng" trước một biến để xác định rằng
biến không bao giờ thay đổi nó tham chiếu. Nếu tôi khai báo một biến là "cuối cùng", tôi
chỉ có thể khởi tạo nó một lần, sau đó tôi không thể thay đổi nó sau đó [nhưng tôi có thể
thao tác cá thể, không có vấn đề]Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy?
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]
số $ cuối cùng = 123;
$số = 456; . bạn thay đổi thay đổi các biến cuối cùngđối tượng $ cuối cùng = stdClass mới;
$object->allowed = true;Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến
không thể cập nhật trực tiếp [tham khảo mới]. Mà làm cho dễ dàng để xác định
khi một biến có thể sửa đổi được hay khôngNó có hợp lệ cho một RFC không?
- Nó có thể sử dụng từ khóa "cuối cùng";
- Nó không phải là BC;
Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân]
rằng đây phải là một RFC cho một từ khóa chỉ đọc nếu có bất cứ điều gì
Tôi cũng nghĩ rằng một biến cuối cùng có thể hữu ích để tạo ra một số nội bộ
cải tiến về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Ý tôi là,
vì biến không thể sửa đổi, nên nó không cần phải là "linh hoạt"
gõ nội bộ [tôi đoán đó là một zval, phải không?]Thẩm quyền giải quyết. https. //github. com/kalessil/phpinspectionsea/issues/363
--
David Coleues
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/tham chiếu ngôn ngữ/từ khóa/chỉ đọc
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc 2017-06-28 18. 59 GMT+02. 00 Kalle Sommer Nielsen kalle@php. net Chào David 2017-06-28 18. 10 GMT+02. 00 David Rodrigues david. proweb@gmail. com Xin chào nội bộ, Java hỗ trợ từ khóa "cuối cùng" trước một biến để xác định rằng Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy? Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1] Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng Trân trọng, Niklas điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật số $ cuối cùng = 123; đối tượng $ cuối cùng = stdClass mới; Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến Nó có hợp lệ cho một RFC không? Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân] Tôi cũng nghĩ rằng một biến cuối cùng có thể hữu ích để tạo ra một số nội bộ Thẩm quyền giải quyết. https. //github. com/kalessil/phpinspectionsea/issues/363 -- [1] http. //php. ròng/hằng số -- Kalle Sommer Nielsen
cái này
biến không bao giờ thay đổi nó tham chiếu. Nếu tôi khai báo một biến là "cuối cùng",
I
chỉ có thể khởi tạo nó một lần, sau đó tôi không thể thay đổi nó sau đó [nhưng tôi
có thể
thao tác cá thể, không có vấn đề]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
các đối tượng,
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]
$số = 456; . bạn thay đổi thay đổi các biến cuối cùng
$object->allowed = true;
không thể cập nhật trực tiếp [tham khảo mới]. Mà làm cho dễ dàng để
nhận dạng
khi một biến có thể sửa đổi được hay không
rằng đây phải là một RFC cho một từ khóa chỉ đọc nếu có bất cứ điều gì
cải tiến về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Tôi
nghĩa là,
vì biến không thể sửa đổi, nên nó không cần phải là "linh hoạt"
gõ nội bộ [tôi đoán đó là một zval, phải không?]
David Coleues
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham khảo/từ khóa/chỉ đọc
Trân trọng,
kalle@php. net
chưa đọc 28-06-2017 19. 37 GMT+02. 00 Niklas Keller me@kelunik. com Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng À vâng, tất nhiên, lời xin lỗi của tôi -- Kalle Sommer Nielsen
Trân trọng,
kalle@php. net
chưa đọc
28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. net
Chào David
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]
.
Không trên thực tế. . [
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
Trong khi các hằng số là thành viên của lớp [hoặc toàn cầu], một biến cuối cùng chỉ là một
biến bị chặn để viết lại và nó có thể được khởi tạo với một dữ liệu mới
nội dung mỗi khi ngữ cảnh đó được gọi [ví dụ:. một chức năng]
Chẳng hạn [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi
biến tham số, nhưng nó có thể nhận một giá trị mới mỗi khi tôi gọi
Chức năng này]
chức năng ghi [tin nhắn $ cuối cùng] { echo $ tin nhắn;
write["Xin chao"];
write["Thế giới"];
// Viết "Xin chào thế giới" trên đầu ra
Hoặc sau đó
hàm RandomNumber [] {
số $ cuối cùng =
in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;tiếng vang $số;
// $number = mt_rand_again[];
}
số ngẫu nhiên[];
// Viết "0. 123"
số ngẫu nhiên[];
// Viết "0. 456"
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham khảo/từ khóa/chỉ đọc
--
David Coleues
chưa đọc
Walter Parker walterp@gmail. com
đã viết.
Không đổi có thể không phải là từ [hoặc ý tưởng] đúng, nhưng tôi đồng ý với
cải xoăn. Chúng ta nên sử dụng chỉ đọc làm từ khóa ở đây chứ không phải cuối cùng làm từ khóa
từ khóa. Chúng tôi có thể giữ các quy tắc phạm vi tương tự để những điều sau đây sẽ hoạt động
> hàm RandomNumber[] {
>
*chỉ đọc *$number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
2017-06-28 15. 46 GMT-03. 00 David Rodrigues david. proweb@gmail. com
28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. net
Chào David
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2].
Không trên thực tế. . [
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"Trong khi các hằng số là thành viên của lớp [hoặc toàn cầu], một biến cuối cùng chỉ là một
biến bị chặn để viết lại và nó có thể được khởi tạo với một dữ liệu mới
nội dung mỗi khi ngữ cảnh đó được gọi [ví dụ:. một chức năng]Chẳng hạn [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi
biến tham số, nhưng nó có thể nhận một giá trị mới mỗi khi tôi gọi
Chức năng này]chức năng ghi [tin nhắn $ cuối cùng] { echo $ tin nhắn;
write["Xin chao"];
write["Thế giới"];
// Viết "Xin chào thế giới" trên đầu raHoặc sau đó
hàm RandomNumber [] {
số $ cuối cùng =6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
tiếng vang $số;// $number = mt_rand_again[];
}
số ngẫu nhiên[];
// Viết "0. 123"
số ngẫu nhiên[];
// Viết "0. 456"
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
từ khóa/từ khóa/chỉ đọc--
David Coleues
--
David Coleues
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
hạng A {
chỉ đọc được bảo vệ $b;
hàm công khai __construct[] {
$this->b = 'C';
}
}
lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}
hàm công khai write[] {
$this->b = 'D';
}
}
$b = B mới;
$b->đọc[];
$b->write[];
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính, nếuAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
những người đã từng làm cho nó đến ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng nữa,
và đó thực sự là một sự phá vỡ BC cho bất cứ điều gì sử dụng sự phản chiếu và
ràng buộc phạm vi đóng] - Mảng và tài nguyên dưới dạng thuộc tính
- Các nhà xây dựng được đặt tên [Nhà máy]
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó - Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com
chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành nhiều hơn
ẩn ý
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTFTừ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốthạng A {
chỉ đọc được bảo vệ $b;hàm công khai __construct[] {
$this->b = 'C';
}
}lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}hàm công khai write[] {
$this->b = 'D';
}
}$b = B mới;
$b->đọc[];
$b->write[];--
Trân trọng,Kalle Sommer Nielsen
kalle@php. net
chưa đọc Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Vâng, sẽ có một số cú pháp mới mà thư viện sẽ không có Thêm cú pháp mới vào một ngôn ngữ có nghĩa là những người có Cập nhật thư viện để hỗ trợ cú pháp mới hoặc yêu cầu PR cho cú pháp đó Nói rằng thư viện có thể kiểm tra mã cho đến phiên bản trước Tôi có thể thấy điều đó sẽ gây khó chịu cho tác giả của những thư viện đó, snip - rất nhiều vấn đề kỹ thuật khó giải quyết Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập Chuẩn rồi. Tôi nghĩ rằng bất kỳ cuộc thảo luận nào mà không có ít nhất một số loại kế hoạch cho hoan hô chưa đọc Này Đan, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
biết, điều này sẽ không được hỗ trợ trong thư viện, nhưng đó không phải là
nghỉ BC
các thư viện kiểm tra mã dựa trên cú pháp hiện tại sẽ cần
chọn giữa
cú pháp mới đã được giới thiệu, nhưng không hỗ trợ mã sau này
vì họ rõ ràng không muốn phải đưa ra lựa chọn đó, nhưng nó
không phải là nghỉ BC
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
xử lý các vấn đề kỹ thuật để thực hiện điều này không có khả năng
làm việc hiệu quả
Đan
đã viết
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
chưa đọc
Xin chào
2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "define[]" là một hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch thì
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
cuộc gọi và "const" rất hạn chế mà không có lý do chính đáng
theo dõi sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong một
câu lệnh if khi thực tế bạn có thể CONCAT hai với hằng số được đặt là
2Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
là một phần của chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "xác định []" là một lệnh gọi hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch như sau
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
và "const" rất hạn chế mà không có lý do chính đáng
sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong câu lệnh if khi bạn
trên thực tế, có thể CONCAT hai với hằng số thiết lập
2 là một phần củaAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn cần nó là một biến trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Ngày 29 tháng 6 năm 2017 11. 05 giờ sáng, "lists@rhsoft. thư mạng. danh sách@rhsoft. net"
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
sau đó nếu bạn biết giá trị sẽ không đổi" và khi các hằng số dài
trong PHP là a] rất tốn kém và b] "const" giả vờ là thời gian biên dịch
có thể chứng minh là sai với mã mẫu của tôi rất tệ khi sử dụng
chậm, cả trong xác định và truy cập
đã viếtAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chưa đọc trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó Tôi không hiểu Mô hình tương đối phổ biến lớp Foo { Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/ Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
đã viết
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
David Coleues
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
0?Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
chưa đọc
2017-06-28 18. 59 GMT+02. 00 Kalle Sommer Nielsen kalle@php. net
Chào David
2017-06-28 18. 10 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Xin chào nội bộ,
Java hỗ trợ từ khóa "cuối cùng" trước một biến để xác định rằng
cái này
biến không bao giờ thay đổi nó tham chiếu. Nếu tôi khai báo một biến là "cuối cùng",
I
chỉ có thể khởi tạo nó một lần, sau đó tôi không thể thay đổi nó sau đó [nhưng tôi
có thể
thao tác cá thể, không có vấn đề]Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy?
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
các đối tượng,
Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng
Trân trọng, Niklas
điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]số $ cuối cùng = 123;
$số = 456; . bạn thay đổi thay đổi các biến cuối cùngđối tượng $ cuối cùng = stdClass mới;
$object->allowed = true;Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến
không thể cập nhật trực tiếp [tham khảo mới]. Mà làm cho dễ dàng để
nhận dạng
khi một biến có thể sửa đổi được hay khôngNó có hợp lệ cho một RFC không?
- Nó có thể sử dụng từ khóa "cuối cùng";
- Nó không phải là BC;
Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân]
rằng đây phải là một RFC cho một từ khóa chỉ đọc nếu có bất cứ điều gìTôi cũng nghĩ rằng một biến cuối cùng có thể hữu ích để tạo ra một số nội bộ
cải tiến về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Tôi
nghĩa là,
vì biến không thể sửa đổi, nên nó không cần phải là "linh hoạt"
gõ nội bộ [tôi đoán đó là một zval, phải không?]Thẩm quyền giải quyết. https. //github. com/kalessil/phpinspectionsea/issues/363
--
David Coleues[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham khảo/từ khóa/chỉ đọc--
Trân trọng,Kalle Sommer Nielsen
kalle@php. net
chưa đọc 28-06-2017 19. 37 GMT+02. 00 Niklas Keller me@kelunik. com Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng À vâng, tất nhiên, lời xin lỗi của tôi -- Kalle Sommer Nielsen
Trân trọng,
kalle@php. net
chưa đọc
28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. net
Chào David
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2]
.
Không trên thực tế. . [
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
Trong khi các hằng số là thành viên của lớp [hoặc toàn cầu], một biến cuối cùng chỉ là một
biến bị chặn để viết lại và nó có thể được khởi tạo với một dữ liệu mới
nội dung mỗi khi ngữ cảnh đó được gọi [ví dụ:. một chức năng]
Chẳng hạn [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi
biến tham số, nhưng nó có thể nhận một giá trị mới mỗi khi tôi gọi
Chức năng này]
chức năng ghi [tin nhắn $ cuối cùng] { echo $ tin nhắn;
write["Xin chao"];
write["Thế giới"];
// Viết "Xin chào thế giới" trên đầu ra
Hoặc sau đó
hàm RandomNumber [] {
số $ cuối cùng =
in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;tiếng vang $số;
// $number = mt_rand_again[];
}
số ngẫu nhiên[];
// Viết "0. 123"
số ngẫu nhiên[];
// Viết "0. 456"
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham khảo/từ khóa/chỉ đọc
--
David Coleues
chưa đọc
Walter Parker walterp@gmail. com
đã viết.
Không đổi có thể không phải là từ [hoặc ý tưởng] đúng, nhưng tôi đồng ý với
cải xoăn. Chúng ta nên sử dụng chỉ đọc làm từ khóa ở đây chứ không phải cuối cùng làm từ khóa
từ khóa. Chúng tôi có thể giữ các quy tắc phạm vi tương tự để những điều sau đây sẽ hoạt động
> hàm RandomNumber[] {
>
*chỉ đọc *$number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
2017-06-28 15. 46 GMT-03. 00 David Rodrigues david. proweb@gmail. com
28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. net
Chào David
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2].
Không trên thực tế. . [
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"Trong khi các hằng số là thành viên của lớp [hoặc toàn cầu], một biến cuối cùng chỉ là một
biến bị chặn để viết lại và nó có thể được khởi tạo với một dữ liệu mới
nội dung mỗi khi ngữ cảnh đó được gọi [ví dụ:. một chức năng]Chẳng hạn [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi
biến tham số, nhưng nó có thể nhận một giá trị mới mỗi khi tôi gọi
Chức năng này]chức năng ghi [tin nhắn $ cuối cùng] { echo $ tin nhắn;
write["Xin chao"];
write["Thế giới"];
// Viết "Xin chào thế giới" trên đầu raHoặc sau đó
hàm RandomNumber [] {
số $ cuối cùng =6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
tiếng vang $số;// $number = mt_rand_again[];
}
số ngẫu nhiên[];
// Viết "0. 123"
số ngẫu nhiên[];
// Viết "0. 456"
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
từ khóa/từ khóa/chỉ đọc--
David Coleues
--
David Coleues
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
hạng A {
chỉ đọc được bảo vệ $b;
hàm công khai __construct[] {
$this->b = 'C';
}
}
lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}
hàm công khai write[] {
$this->b = 'D';
}
}
$b = B mới;
$b->đọc[];
$b->write[];
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính, nếuAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
những người đã từng làm cho nó đến ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng nữa,
và đó thực sự là một sự phá vỡ BC cho bất cứ điều gì sử dụng sự phản chiếu và
ràng buộc phạm vi đóng] - Mảng và tài nguyên dưới dạng thuộc tính
- Các nhà xây dựng được đặt tên [Nhà máy]
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó - Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com
chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành nhiều hơn
ẩn ý
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTFTừ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốthạng A {
chỉ đọc được bảo vệ $b;hàm công khai __construct[] {
$this->b = 'C';
}
}lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}hàm công khai write[] {
$this->b = 'D';
}
}$b = B mới;
$b->đọc[];
$b->write[];--
Trân trọng,Kalle Sommer Nielsen
kalle@php. net
chưa đọc Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Vâng, sẽ có một số cú pháp mới mà thư viện sẽ không có Thêm cú pháp mới vào một ngôn ngữ có nghĩa là những người có Cập nhật thư viện để hỗ trợ cú pháp mới hoặc yêu cầu PR cho cú pháp đó Nói rằng thư viện có thể kiểm tra mã cho đến phiên bản trước Tôi có thể thấy điều đó sẽ gây khó chịu cho tác giả của những thư viện đó, snip - rất nhiều vấn đề kỹ thuật khó giải quyết Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập Chuẩn rồi. Tôi nghĩ rằng bất kỳ cuộc thảo luận nào mà không có ít nhất một số loại kế hoạch cho hoan hô chưa đọc Này Đan, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
biết, điều này sẽ không được hỗ trợ trong thư viện, nhưng đó không phải là
nghỉ BC
các thư viện kiểm tra mã dựa trên cú pháp hiện tại sẽ cần
chọn giữa
cú pháp mới đã được giới thiệu, nhưng không hỗ trợ mã sau này
vì họ rõ ràng không muốn phải đưa ra lựa chọn đó, nhưng nó
không phải là nghỉ BC
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
xử lý các vấn đề kỹ thuật để thực hiện điều này không có khả năng
làm việc hiệu quả
Đan
đã viết
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
chưa đọc
Xin chào
2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "define[]" là một hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch thì
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
cuộc gọi và "const" rất hạn chế mà không có lý do chính đáng
theo dõi sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong một
câu lệnh if khi thực tế bạn có thể CONCAT hai với hằng số được đặt là
2Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
là một phần của chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "xác định []" là một lệnh gọi hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch như sau
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
và "const" rất hạn chế mà không có lý do chính đáng
sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong câu lệnh if khi bạn
trên thực tế, có thể CONCAT hai với hằng số thiết lập
2 là một phần củaAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn cần nó là một biến trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Ngày 29 tháng 6 năm 2017 11. 05 giờ sáng, "lists@rhsoft. thư mạng. danh sách@rhsoft. net"
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
sau đó nếu bạn biết giá trị sẽ không đổi" và khi các hằng số dài
trong PHP là a] rất tốn kém và b] "const" giả vờ là thời gian biên dịch
có thể chứng minh là sai với mã mẫu của tôi rất tệ khi sử dụng
chậm, cả trong xác định và truy cập
đã viếtAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chưa đọc trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó Tôi không hiểu Mô hình tương đối phổ biến lớp Foo { Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/ Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
đã viết
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
David Coleues
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
0?Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
chưa đọc
Walter Parker walterp@gmail. com
đã viết.
Không đổi có thể không phải là từ [hoặc ý tưởng] đúng, nhưng tôi đồng ý với
cải xoăn. Chúng ta nên sử dụng chỉ đọc làm từ khóa ở đây chứ không phải cuối cùng làm từ khóa
từ khóa. Chúng tôi có thể giữ các quy tắc phạm vi tương tự để những điều sau đây sẽ hoạt động
> hàm RandomNumber[] {
>
*chỉ đọc *$number =6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
2017-06-28 15. 46 GMT-03. 00 David Rodrigues david. proweb@gmail. com
28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. net
Chào David
Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]
Tuy nhiên, các hằng số không hỗ trợ các loại vô hướng, chẳng hạn như mảng hoặc
đối tượng, điều gì sẽ thực sự giải quyết nó ở phía đối tượng của sự vật
sẽ là phần giới thiệu từ khóa "chỉ đọc" hoặc tương tự, như
của C#[2].
Không trên thực tế. . [
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"Trong khi các hằng số là thành viên của lớp [hoặc toàn cầu], một biến cuối cùng chỉ là một
biến bị chặn để viết lại và nó có thể được khởi tạo với một dữ liệu mới
nội dung mỗi khi ngữ cảnh đó được gọi [ví dụ:. một chức năng]Chẳng hạn [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi
biến tham số, nhưng nó có thể nhận một giá trị mới mỗi khi tôi gọi
Chức năng này]chức năng ghi [tin nhắn $ cuối cùng] { echo $ tin nhắn;
write["Xin chao"];
write["Thế giới"];
// Viết "Xin chào thế giới" trên đầu raHoặc sau đó
hàm RandomNumber [] {
số $ cuối cùng =6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
tiếng vang $số;// $number = mt_rand_again[];
}
số ngẫu nhiên[];
// Viết "0. 123"
số ngẫu nhiên[];
// Viết "0. 456"
[1] http. //php. ròng/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
từ khóa/từ khóa/chỉ đọc--
David Coleues
--
David Coleues
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
hạng A {
chỉ đọc được bảo vệ $b;
hàm công khai __construct[] {
$this->b = 'C';
}
}
lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}
hàm công khai write[] {
$this->b = 'D';
}
}
$b = B mới;
$b->đọc[];
$b->write[];
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính, nếuAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
những người đã từng làm cho nó đến ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng nữa,
và đó thực sự là một sự phá vỡ BC cho bất cứ điều gì sử dụng sự phản chiếu và
ràng buộc phạm vi đóng] - Mảng và tài nguyên dưới dạng thuộc tính
- Các nhà xây dựng được đặt tên [Nhà máy]
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó - Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com
chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành nhiều hơn
ẩn ý
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTFTừ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốthạng A {
chỉ đọc được bảo vệ $b;hàm công khai __construct[] {
$this->b = 'C';
}
}lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}hàm công khai write[] {
$this->b = 'D';
}
}$b = B mới;
$b->đọc[];
$b->write[];--
Trân trọng,Kalle Sommer Nielsen
kalle@php. net
chưa đọc Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Vâng, sẽ có một số cú pháp mới mà thư viện sẽ không có Thêm cú pháp mới vào một ngôn ngữ có nghĩa là những người có Cập nhật thư viện để hỗ trợ cú pháp mới hoặc yêu cầu PR cho cú pháp đó Nói rằng thư viện có thể kiểm tra mã cho đến phiên bản trước Tôi có thể thấy điều đó sẽ gây khó chịu cho tác giả của những thư viện đó, snip - rất nhiều vấn đề kỹ thuật khó giải quyết Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập Chuẩn rồi. Tôi nghĩ rằng bất kỳ cuộc thảo luận nào mà không có ít nhất một số loại kế hoạch cho hoan hô chưa đọc Này Đan, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
biết, điều này sẽ không được hỗ trợ trong thư viện, nhưng đó không phải là
nghỉ BC
các thư viện kiểm tra mã dựa trên cú pháp hiện tại sẽ cần
chọn giữa
cú pháp mới đã được giới thiệu, nhưng không hỗ trợ mã sau này
vì họ rõ ràng không muốn phải đưa ra lựa chọn đó, nhưng nó
không phải là nghỉ BC
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
xử lý các vấn đề kỹ thuật để thực hiện điều này không có khả năng
làm việc hiệu quả
Đan
đã viết
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
chưa đọc
29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com
chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
hạng A {
chỉ đọc được bảo vệ $b;
hàm công khai __construct[] {
$this->b = 'C';
}
}
lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}
hàm công khai write[] {
$this->b = 'D';
}
}
$b = B mới;
$b->đọc[];
$b->write[];
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính, nếuAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
những người đã từng làm cho nó đến ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng nữa,
và đó thực sự là một sự phá vỡ BC cho bất cứ điều gì sử dụng sự phản chiếu và
ràng buộc phạm vi đóng] - Mảng và tài nguyên dưới dạng thuộc tính
- Các nhà xây dựng được đặt tên [Nhà máy]
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó - Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com
chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành nhiều hơn
ẩn ý
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTFTừ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốthạng A {
chỉ đọc được bảo vệ $b;hàm công khai __construct[] {
$this->b = 'C';
}
}lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}hàm công khai write[] {
$this->b = 'D';
}
}$b = B mới;
$b->đọc[];
$b->write[];--
Trân trọng,Kalle Sommer Nielsen
kalle@php. net
chưa đọc Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Vâng, sẽ có một số cú pháp mới mà thư viện sẽ không có Thêm cú pháp mới vào một ngôn ngữ có nghĩa là những người có Cập nhật thư viện để hỗ trợ cú pháp mới hoặc yêu cầu PR cho cú pháp đó Nói rằng thư viện có thể kiểm tra mã cho đến phiên bản trước Tôi có thể thấy điều đó sẽ gây khó chịu cho tác giả của những thư viện đó, snip - rất nhiều vấn đề kỹ thuật khó giải quyết Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập Chuẩn rồi. Tôi nghĩ rằng bất kỳ cuộc thảo luận nào mà không có ít nhất một số loại kế hoạch cho hoan hô chưa đọc Này Đan, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
biết, điều này sẽ không được hỗ trợ trong thư viện, nhưng đó không phải là
nghỉ BC
các thư viện kiểm tra mã dựa trên cú pháp hiện tại sẽ cần
chọn giữa
cú pháp mới đã được giới thiệu, nhưng không hỗ trợ mã sau này
vì họ rõ ràng không muốn phải đưa ra lựa chọn đó, nhưng nó
không phải là nghỉ BC
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
xử lý các vấn đề kỹ thuật để thực hiện điều này không có khả năng
làm việc hiệu quả
Đan
đã viết
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
chưa đọc
Công cụ sửa đổi
Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0 có thể xung đột với các định nghĩa loại thuộc tính, nếunhững người đã từng làm cho nó đến ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng nữa,
và đó thực sự là một sự phá vỡ BC cho bất cứ điều gì sử dụng sự phản chiếu và
ràng buộc phạm vi đóng] - Mảng và tài nguyên dưới dạng thuộc tính
- Các nhà xây dựng được đặt tên [Nhà máy]
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó - Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com
chỉ đọc $number =
6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Tôi đồng ý rằng "chỉ đọc" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành nhiều hơn
ẩn ý
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTFTừ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốthạng A {
chỉ đọc được bảo vệ $b;hàm công khai __construct[] {
$this->b = 'C';
}
}lớp B mở rộng A {
chức năng công khai đọc[] {
tiếng vang $this->b;
}hàm công khai write[] {
$this->b = 'D';
}
}$b = B mới;
$b->đọc[];
$b->write[];--
Trân trọng,Kalle Sommer Nielsen
kalle@php. net
chưa đọc Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Vâng, sẽ có một số cú pháp mới mà thư viện sẽ không có Thêm cú pháp mới vào một ngôn ngữ có nghĩa là những người có Cập nhật thư viện để hỗ trợ cú pháp mới hoặc yêu cầu PR cho cú pháp đó Nói rằng thư viện có thể kiểm tra mã cho đến phiên bản trước Tôi có thể thấy điều đó sẽ gây khó chịu cho tác giả của những thư viện đó, snip - rất nhiều vấn đề kỹ thuật khó giải quyết Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập Chuẩn rồi. Tôi nghĩ rằng bất kỳ cuộc thảo luận nào mà không có ít nhất một số loại kế hoạch cho hoan hô chưa đọc Này Đan, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
biết, điều này sẽ không được hỗ trợ trong thư viện, nhưng đó không phải là
nghỉ BC
các thư viện kiểm tra mã dựa trên cú pháp hiện tại sẽ cần
chọn giữa
cú pháp mới đã được giới thiệu, nhưng không hỗ trợ mã sau này
vì họ rõ ràng không muốn phải đưa ra lựa chọn đó, nhưng nó
không phải là nghỉ BC
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
xử lý các vấn đề kỹ thuật để thực hiện điều này không có khả năng
làm việc hiệu quả
Đan
đã viết
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
chưa đọc
Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì
sử dụng ràng buộc phạm vi phản chiếu và đóng
Không, không phải
Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
Vâng, sẽ có một số cú pháp mới mà thư viện sẽ không có
biết, điều này sẽ không được hỗ trợ trong thư viện, nhưng đó không phải là
nghỉ BC
Thêm cú pháp mới vào một ngôn ngữ có nghĩa là những người có
các thư viện kiểm tra mã dựa trên cú pháp hiện tại sẽ cần
chọn giữa
Cập nhật thư viện để hỗ trợ cú pháp mới hoặc yêu cầu PR cho cú pháp đó
Nói rằng thư viện có thể kiểm tra mã cho đến phiên bản trước
cú pháp mới đã được giới thiệu, nhưng không hỗ trợ mã sau này
Tôi có thể thấy điều đó sẽ gây khó chịu cho tác giả của những thư viện đó,
vì họ rõ ràng không muốn phải đưa ra lựa chọn đó, nhưng nó
không phải là nghỉ BC
snip - rất nhiều vấn đề kỹ thuật khó giải quyết
Đây chính xác là cùng một tập hợp các vấn đề mà chúng tôi gặp phải với các thuộc tính đã nhập
RFC và nguyên nhân khiến RFC bị lỗi. xin vui lòng lấy tất cả những trong
cân nhắc trong khi thiết kế tính năng
Chuẩn rồi. Tôi nghĩ rằng bất kỳ cuộc thảo luận nào mà không có ít nhất một số loại kế hoạch cho
xử lý các vấn đề kỹ thuật để thực hiện điều này không có khả năng
làm việc hiệu quả
hoan hô
Đan
chưa đọc Này Đan, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì Không, không phải Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
đã viết
sử dụng ràng buộc phạm vi phản chiếu và đóng
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
chưa đọc
Này Đan,
Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 12. 07:00, Dan Ackroyd danack@basereality. com
đã viết
Tham chiếu đến thuộc tính. thực sự là một sự phá vỡ BC cho bất cứ điều gì
sử dụng ràng buộc phạm vi phản chiếu và đóngKhông, không phải
Nếu tính năng đó được đưa vào PHP, bất kỳ mã nào hiện tại
hợp lệ, mà thư viện có khả năng phản ánh, sẽ vẫn hợp lệ
mã, mà thư viện sẽ vẫn có khả năng phản ánh
Chúng tôi đã thảo luận điều này trước đây. bất kỳ thư viện nào được thiết kế xung quanh khả năng của
xử lý một đối tượng chung sẽ bị hỏng trong các tình huống này, đó là lý do tại sao
Tôi luôn mang nó lên. Nó cần được xem xét trong một RFC, bao gồm
giảm thiểu có thể và các lựa chọn thay thế
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
của Kalle Sommer Nielsen — xem nguồnchưa đọc
Xin chào
2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
--
Trân trọng,
Kalle Sommer Nielsen
kalle@php. net
chưa đọc tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "define[]" là một hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch thì
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
cuộc gọi và "const" rất hạn chế mà không có lý do chính đáng
theo dõi sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong một
câu lệnh if khi thực tế bạn có thể CONCAT hai với hằng số được đặt là
2Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
là một phần của chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "xác định []" là một lệnh gọi hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch như sau
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
và "const" rất hạn chế mà không có lý do chính đáng
sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong câu lệnh if khi bạn
trên thực tế, có thể CONCAT hai với hằng số thiết lập
2 là một phần củaAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn cần nó là một biến trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Ngày 29 tháng 6 năm 2017 11. 05 giờ sáng, "lists@rhsoft. thư mạng. danh sách@rhsoft. net"
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
sau đó nếu bạn biết giá trị sẽ không đổi" và khi các hằng số dài
trong PHP là a] rất tốn kém và b] "const" giả vờ là thời gian biên dịch
có thể chứng minh là sai với mã mẫu của tôi rất tệ khi sử dụng
chậm, cả trong xác định và truy cập
đã viếtAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chưa đọc trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó Tôi không hiểu Mô hình tương đối phổ biến lớp Foo { Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/ Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
đã viết
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
David Coleues
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
0?Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
của list@rhsoft. net — xem nguồnchưa đọc
tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen
2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
bởi vì các hằng số đắt tiền trong PHP khi "define[]" là một hàm
cuộc gọi và "const" rất hạn chế mà không có lý do chính đáng
"không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch thì
theo dõi sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong một
câu lệnh if khi thực tế bạn có thể CONCAT hai với hằng số được đặt là
Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2là một phần của chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần bởi vì các hằng số đắt tiền trong PHP khi "xác định []" là một lệnh gọi hàm "không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch như sau
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
và "const" rất hạn chế mà không có lý do chính đáng
sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong câu lệnh if khi bạn
trên thực tế, có thể CONCAT hai với hằng số thiết lập
2 là một phần củaAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chính câu lệnh if
nếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn cần nó là một biến trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Ngày 29 tháng 6 năm 2017 11. 05 giờ sáng, "lists@rhsoft. thư mạng. danh sách@rhsoft. net"
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
sau đó nếu bạn biết giá trị sẽ không đổi" và khi các hằng số dài
trong PHP là a] rất tốn kém và b] "const" giả vờ là thời gian biên dịch
có thể chứng minh là sai với mã mẫu của tôi rất tệ khi sử dụng
chậm, cả trong xác định và truy cập
đã viếtAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chưa đọc trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
- Mảng và tài nguyên dưới dạng thuộc tính
Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
- Các nhà xây dựng được đặt tên [Nhà máy]
Tôi không hiểu
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"]
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
- Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com
Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net
đã viếttrong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là
chậm, cả trong xác định và truy cậpHai điều ở đây
- đừng bao giờ xem xét cơ bản trực quan cho bất kỳ sự so sánh nào. nó là
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge- tốc độ không liên quan trong phạm vi này. chương trình đúng là. Sau cùng
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
--
David Coleues
chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
Không, vấn đề là sau
lớp Foo { công khai cuối cùng $bar = 'baz';
$foo = Foo mới;
$bar = & $foo->bar;
$bar = 'taz';
var_dump[$foo->bar];
Loại mã xấu này sẽ phá vỡ
- Mảng và tài nguyên dưới dạng thuộc tính
Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
- Các nhà xây dựng được đặt tên [Nhà máy]
Tôi không hiểu
Mô hình tương đối phổ biến
lớp Foo {
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nóVì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"]
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
của Marco Pivetta — xem nguồnchưa đọc
Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen
2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com
Keyworks "cuối cùng" làm cho giá trị biến "phạm vi cục bộ" bị chặn thành
viết lại" sau khi khởi tạo nó
Được rồi, nó giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết"Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lạibởi vì các hằng số đắt tiền trong PHP khi "xác định []" là một lệnh gọi hàm
và "const" rất hạn chế mà không có lý do chính đáng"không có lý do chính đáng" bởi vì nếu nó thực sự sẽ là thời gian biên dịch như sau
sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong câu lệnh if khi bạn
trên thực tế, có thể CONCAT hai với hằng số thiết lập2 là một phần củaAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen: 2017-06-28 20:46 GMT+02:00 David Rodrigues : The "final" keyworks make a "local scope" variable value "blocked to rewrite" after instantiate it. Okay, it sounds like a "const", and it is, but "not as we known it". I get that, but I still don't understand why you would forcefully need it to be a variable still then if you know the value is gonna be constant, of course besides global visibility or in iterations because constants are expensive in PHP when "define[]" is a function call and "const" is very limited for no good reason "no good reason" because if it really would be compile time the following won't work and so why can't you use 'const' within a if-statement when you in fact can CONCAT two with `define[]` set constant which are part of a if-statement themself ____________________________________________________ if[PHP_SAPI !== 'cli'] { define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']]; define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port]; } else { define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]]; define['rh_serverurl', '//localhost']; } const rh_phpself = rh_serverurl . MY_PHP_SELF;
chính câu lệnh ifnếu [PHP_SAPI. == 'cli']
{
xác định['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
xác định ['rh_serverurl', PROTOCOL_PREFIX. MY_SERVER_NAME. $rh_port];
}
khác
{
xác định ['MY_PHP_SELF', '/'. tên cơ sở[$_SERVER['SCRIPT_NAME']]];
xác định ['rh_serverurl', 'http. //máy chủ cục bộ'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn cần nó là một biến trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Ngày 29 tháng 6 năm 2017 11. 05 giờ sáng, "lists@rhsoft. thư mạng. danh sách@rhsoft. net"
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
sau đó nếu bạn biết giá trị sẽ không đổi" và khi các hằng số dài
trong PHP là a] rất tốn kém và b] "const" giả vờ là thời gian biên dịch
có thể chứng minh là sai với mã mẫu của tôi rất tệ khi sử dụng
chậm, cả trong xác định và truy cập
đã viếtAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
chưa đọc trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó Tôi không hiểu Mô hình tương đối phổ biến lớp Foo { Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/ Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
đã viết
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
David Coleues
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
0?Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
của list@rhsoft. net — xem nguồnchưa đọc
tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta
Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một
hằng số trên toàn hệ thống, điều đó có nghĩa là nó thuần túy về mặt tham chiếu trong phạm vi của nó
tôi đã đề cập đến "tại sao bạn vẫn cần nó là một biến
sau đó nếu bạn biết giá trị sẽ không đổi" và khi các hằng số dài
trong PHP là a] rất tốn kém và b] "const" giả vờ là thời gian biên dịch
có thể chứng minh là sai với mã mẫu của tôi rất tệ khi sử dụng
trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là
chậm, cả trong xác định và truy cập
Ngày 29 tháng 6 năm 2017 11. 05 giờ sáng, "lists@rhsoft. thư mạng. danh sách@rhsoft. net"
đã viếtAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen: 2017-06-28 20:46 GMT+02:00 David Rodrigues : The "final" keyworks make a "local scope" variable value "blocked to rewrite" after instantiate it. Okay, it sounds like a "const", and it is, but "not as we known it". I get that, but I still don't understand why you would forcefully need it to be a variable still then if you know the value is gonna be constant, of course besides global visibility or in iterations because constants are expensive in PHP when "define[]" is a function call and "const" is very limited for no good reason "no good reason" because if it really would be compile time the following won't work and so why can't you use 'const' within a if-statement when you in fact can CONCAT two with `define[]` set constant which are part of a if-statement themself ____________________________________________________ if[PHP_SAPI !== 'cli'] { define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']]; define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port]; } else { define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]]; define['rh_serverurl', '//localhost']; } const rh_phpself = rh_serverurl . MY_PHP_SELF;
chưa đọc trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó Tôi không hiểu Mô hình tương đối phổ biến lớp Foo { Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/ Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
đã viết
chậm, cả trong xác định và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
David Coleues
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
0?Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
của Marco Pivetta — xem nguồnchưa đọc
trong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là
chậm, cả trong xác định và truy cập
Hai điều ở đây
- đừng bao giờ xem xét cơ bản trực quan cho bất kỳ sự so sánh nào. nó là
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge - tốc độ không liên quan trong phạm vi này. chương trình đúng là. Sau cùng
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém chưa đọc Tôi sẽ cố gắng trả lời các câu hỏi Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này, Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác Công cụ sửa đổi
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
- Mảng và tài nguyên dưới dạng thuộc tính
Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
- Các nhà xây dựng được đặt tên [Nhà máy]
Tôi không hiểu
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"]
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
- Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com
Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net
đã viếttrong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là
chậm, cả trong xác định và truy cậpHai điều ở đây
- đừng bao giờ xem xét cơ bản trực quan cho bất kỳ sự so sánh nào. nó là
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge- tốc độ không liên quan trong phạm vi này. chương trình đúng là. Sau cùng
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
--
David Coleues
chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
Không, vấn đề là sau
lớp Foo { công khai cuối cùng $bar = 'baz';
$foo = Foo mới;
$bar = & $foo->bar;
$bar = 'taz';
var_dump[$foo->bar];
Loại mã xấu này sẽ phá vỡ
- Mảng và tài nguyên dưới dạng thuộc tính
Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
- Các nhà xây dựng được đặt tên [Nhà máy]
Tôi không hiểu
Mô hình tương đối phổ biến
lớp Foo {
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nóVì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"]
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
của list@rhsoft. net — xem nguồnchưa đọc
tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta
Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net
mailto:lists@rhsoft.net
đã viếtin other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
Hai điều ở đây
- đừng bao giờ xem xét cơ bản trực quan cho bất kỳ sự so sánh nào
về cơ bản là vậy [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
có thể nghĩ về trước malborge
thôi đi - nhiều người cũng nói như vậy về PHP
- tốc độ không liên quan trong phạm vi này. chương trình đúng là. Sau cùng
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ
logic dựa trên trình truy cập [getter] [cực kỳ chậm] đối với thuộc tính công cộng dựa trên
[ít chi phí hơn, cũng bằng văn bản]
trong phạm vi nào là tốc độ không liên quan?
phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh tốn kém
mã lệnh và các lời gọi hàm vô ích, tính chính xác của chương trình là hoàn toàn
điều khác biệt và nó không phải là cái này hay cái kia mà là cả hai
chưa đọc
Tôi sẽ cố gắng trả lời các câu hỏi
Tôi hiểu rồi, nhưng tôi vẫn không hiểu tại sao bạn lại cần
nó vẫn là một biến nếu bạn biết giá trị sẽ là
không đổi, tất nhiên bên cạnh khả năng hiển thị toàn cầu hoặc trong các lần lặp lại
"cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ
được sửa đổi, nhưng nó có thể được khởi tạo với các giá trị khác nhau trên cùng một
thời gian chạy. Nó giống như tôi nói "tên tôi là David và sẽ luôn là David
khi tôi ở trong một bối cảnh không chính thức" và "tên tôi là Rodrigues và sẽ là tất cả
thời gian Rodrigues khi tôi đang ở trong bối cảnh hình thức", trên cùng một "tài liệu"
https. //pastebin. com/QCrmrZQe
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức cuối cùng và các lớp cuối cùng, điều đó có nghĩa là nó không thể
ghi đè/mở rộng tương ứng, nếu từ khóa cuối cùng thì cũng sẽ
áp dụng cho các biến nhưng điều đó có nghĩa là chúng không thể được ghi vào,
điều đó sẽ tạo ra một yếu tố WTF
Nó được thực hiện trên Java chẳng hạn. Chúng ta có thể sử dụng "cuối cùng" trên các lớp học hoặc
các hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
điều đó có nghĩa là nó không thể được tham chiếu lại [viết lại sau khi khởi tạo]
Và dường như không xa lạ với tôi. Chúng ta có thể "trừu tượng thuật ngữ" để hiểu
rằng trong bất kỳ trường hợp nào [đối với lớp, hàm hoặc biến] thông tin
không thể ghi đè sau khi xác định
Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy
các lớp kế thừa hoặc các lớp mở rộng có thể đọc một thuộc tính được bảo vệ,
nhưng không sửa đổi nó là tốt
Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho người khác
trường hợp. tạo một tài sản công cộng chỉ có thể ghi bởi lớp riêng. Nhưng nó dành cho
thảo luận khác
Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen: 2017-06-28 20:46 GMT+02:00 David Rodrigues : The "final" keyworks make a "local scope" variable value "blocked to rewrite" after instantiate it. Okay, it sounds like a "const", and it is, but "not as we known it". I get that, but I still don't understand why you would forcefully need it to be a variable still then if you know the value is gonna be constant, of course besides global visibility or in iterations because constants are expensive in PHP when "define[]" is a function call and "const" is very limited for no good reason "no good reason" because if it really would be compile time the following won't work and so why can't you use 'const' within a if-statement when you in fact can CONCAT two with `define[]` set constant which are part of a if-statement themself ____________________________________________________ if[PHP_SAPI !== 'cli'] { define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']]; define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port]; } else { define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]]; define['rh_serverurl', '//localhost']; } const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại giá trị cuối cùng
thuộc tính trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
- Mảng và tài nguyên dưới dạng thuộc tính
Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
- Các nhà xây dựng được đặt tên [Nhà máy]
Tôi không hiểu
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nó
Vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"]
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
- Bỏ đặt thuộc tính và cung cấp một cơ chế thay thế để phân biệt
"không bắt đầu", "không xác định" và "đóng băng" trong trường hợp thuộc tính cuối cùng
cách sử dụng mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tại
Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com
Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net
đã viếttrong các ngôn ngữ khác như hằng số Visual Basic rất nhanh, trong PHP chúng là
chậm, cả trong xác định và truy cậpHai điều ở đây
- đừng bao giờ xem xét cơ bản trực quan cho bất kỳ sự so sánh nào. nó là
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ về trước malborge- tốc độ không liên quan trong phạm vi này. chương trình đúng là. Sau cùng
các thuộc tính sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ bộ truy cập
[getter] dựa trên logic [cực kỳ chậm] sang thuộc tính công cộng dựa trên [ít hơn
chi phí, cũng bằng văn bản]Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
--
David Coleues
chưa đọc Chào David, Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi
đã viết
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]
Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
Không, vấn đề là sau
lớp Foo { công khai cuối cùng $bar = 'baz';
$foo = Foo mới;
$bar = & $foo->bar;
$bar = 'taz';
var_dump[$foo->bar];
Loại mã xấu này sẽ phá vỡ
- Mảng và tài nguyên dưới dạng thuộc tính
Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
- Các nhà xây dựng được đặt tên [Nhà máy]
Tôi không hiểu
Mô hình tương đối phổ biến
lớp Foo {
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nóVì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"]
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/
của Marco Pivetta — xem nguồnchưa đọc
Chào David,
Vào thứ năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com
đã viết
Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen: 2017-06-28 20:46 GMT+02:00 David Rodrigues : The "final" keyworks make a "local scope" variable value "blocked to rewrite" after instantiate it. Okay, it sounds like a "const", and it is, but "not as we known it". I get that, but I still don't understand why you would forcefully need it to be a variable still then if you know the value is gonna be constant, of course besides global visibility or in iterations because constants are expensive in PHP when "define[]" is a function call and "const" is very limited for no good reason "no good reason" because if it really would be compile time the following won't work and so why can't you use 'const' within a if-statement when you in fact can CONCAT two with `define[]` set constant which are part of a if-statement themself ____________________________________________________ if[PHP_SAPI !== 'cli'] { define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']]; define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port]; } else { define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]]; define['rh_serverurl', '//localhost']; } const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những thứ đó từng biến nó thành ngôn ngữ
Tuy nhiên, một vài điểm đau vẫn còn
- Tham chiếu đến thuộc tính [bạn không thể tham chiếu thuộc tính cuối cùng
nữa, và đó thực sự là một sự phá vỡ BC cho bất cứ thứ gì sử dụng sự phản chiếu
và ràng buộc phạm vi đóng]Tôi không biết liệu tôi có hiểu không, nhưng đối với các thuộc tính, bạn có thể xác định lại một
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
Không, vấn đề là sau
lớp Foo { công khai cuối cùng $bar = 'baz';
$foo = Foo mới;
$bar = & $foo->bar;
$bar = 'taz';
var_dump[$foo->bar];
Loại mã xấu này sẽ phá vỡ
- Mảng và tài nguyên dưới dạng thuộc tính
Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn
không sửa đổi tài liệu tham khảo. https. //pastebin. com/D38wL8x7
Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn, và vâng, nó
về cơ bản ngăn chặn việc giảm số lượng tham chiếu trên cụ thể đó
tài sản. Tôi nghĩ rằng điều này giết chết tính hữu ích của tính năng, nhưng nó thực sự
vẫn hữu ích
- Các nhà xây dựng được đặt tên [Nhà máy]
Tôi không hiểu
Mô hình tương đối phổ biến
lớp Foo {
thanh $ cuối cùng riêng tư;
chức năng riêng tư __construct[] { /* hammertime */ }
chức năng tĩnh công khai tạo [$ cái gì đó]. bản thân {
$instance = bản thân mới[];
$instance->bar = $something;
trả lại cá thể $;
}
}
Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/
- Tính vô hiệu của thuộc tính - làm thế nào để bạn xác định nếu một thuộc tính được ghi vào
"thời gian hợp lệ cuối cùng" trước khi đóng băng nóVì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"]
thì bạn chỉ nên khởi tạo nó khi bạn viết phần đầu [và
đóng băng] giá trị. https. //pastebin. com/Ua6DFUC1
Hiểu rồi, vậy thao tác "viết đầu tiên" sẽ tương đương với thao tác đóng băng?
bạn có niêm phong thuộc tính nếu giá trị không bị ghi đè không?
giá trị mặc định cho các thuộc tính được khai báo
Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?
- Bỏ đặt thuộc tính và cung cấp cơ chế thay thế cho
phân biệt "không quen biết", "không xác định" và "đóng băng" trong trường hợp cuối cùng
cách sử dụng thuộc tính mà không phá vỡ ngữ nghĩa truy cập thuộc tính hiện tạiNó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với
trạng thái "không bao giờ thay đổi sau khi khởi tạo" [cờ]. chúng ta chỉ có thể
triển khai một phương thức phản chiếu mới cho các thuộc tính để xác định xem nó có
isFinal[], hoặc thậm chí cho các biến như "is_FINAL[$var]". Mặt khác, điều này
cuối cùng không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" để nhà phát triển của chính họ biết rằng không được phép sửa đổi nó nữa
Có lẽ chúng ta cần các công cụ chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
bởi vì nó có thể là một phần của mã mà người dùng không sửa đổi quyền truy cập
[ví dụ. Mã nhà sản xuất]. https. //pastebin. com/jSjNQACd
API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy
lớp Foo {
cá nhân cuối cùng $foo;
$lazyLoad riêng tư;
hàm công khai saySomething[] {
trở lại 'Nói'. $this->foo;
}
hàm riêng __construct[] {
}
chức năng tĩnh công khai mới []. bản thân {
$instance = bản thân mới[];
$instance->foo = 'cái gì đó';
trả lại cá thể $;
}
hàm tĩnh công khai newLazy[]. bản thân {
$instance = bản thân mới[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'thứ gì đó lười biếng';
};
bỏ đặt[$instance->foo];
trả lại cá thể $;
}
hàm công khai __get[$name] {
[$this->lazyLoad][];
trả về $this->foo;
}
}
$foo = Foo. Mới[];
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
https. //3v4l. org/UPVWF
Hy vọng rằng làm rõ nó
Marco Pivetta
http. //twitter. com/Ocramius
http. // ocramius. github. com/