Biến php cuối cùng

  • 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

Biến php cuối cùng
5 năm trước bởi David Rodrigues — xem nguồn

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

của Kalle Sommer Nielsen — xem nguồn

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ô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;

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

của Niklas Keller — xem nguồn

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ô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;

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

của Kalle Sommer Nielsen — xem nguồn

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

--
Trân trọng,

Kalle Sommer Nielsen
kalle@php. net

của David Rodrigues — xem nguồn

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

của David Rodrigues — xem nguồn

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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;

​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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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 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-refe
từ khóa/từ khóa/chỉ đọc

--
David Coleues

--
David Coleues

của Kalle Sommer Nielsen — xem nguồn

chưa đọc

29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com

chỉ đọc $number =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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

của Marco Pivetta — xem nguồn

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', 'http://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ếu
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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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ố 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

của Dan Ackroyd — xem nguồn

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

của Marco Pivetta — xem nguồn

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à đó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

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ồn

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

của list@rhsoft. net — xem nguồn

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
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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2
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;

của Marco Pivetta — xem nguồn

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
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ại

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
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ập

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 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;

của list@rhsoft. net — xem nguồn

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
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ết

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

của Marco Pivetta — xem nguồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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 Kalle Sommer Nielsen — xem nguồn

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ô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;

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

của Niklas Keller — xem nguồn

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ô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;

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

của Kalle Sommer Nielsen — xem nguồn

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

--
Trân trọng,

Kalle Sommer Nielsen
kalle@php. net

của David Rodrigues — xem nguồn

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

của David Rodrigues — xem nguồn

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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;

​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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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 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-refe
từ khóa/từ khóa/chỉ đọc

--
David Coleues

--
David Coleues

của Kalle Sommer Nielsen — xem nguồn

chưa đọc

29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com

chỉ đọc $number =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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

của Marco Pivetta — xem nguồn

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', 'http://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ếu
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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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ố 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

của Dan Ackroyd — xem nguồn

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

của Marco Pivetta — xem nguồn

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à đó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

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ồn

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

của list@rhsoft. net — xem nguồn

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
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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2
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;

của Marco Pivetta — xem nguồn

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
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ại

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
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ập

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 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;

của list@rhsoft. net — xem nguồn

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
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ết

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

của Marco Pivetta — xem nguồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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 Niklas Keller — xem nguồn

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ô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;

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

của Kalle Sommer Nielsen — xem nguồn

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

--
Trân trọng,

Kalle Sommer Nielsen
kalle@php. net

của David Rodrigues — xem nguồn

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

của David Rodrigues — xem nguồn

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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;

​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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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 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-refe
từ khóa/từ khóa/chỉ đọc

--
David Coleues

--
David Coleues

của Kalle Sommer Nielsen — xem nguồn

chưa đọc

29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com

chỉ đọc $number =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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

của Marco Pivetta — xem nguồn

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', 'http://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ếu
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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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ố 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

của Dan Ackroyd — xem nguồn

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

của Marco Pivetta — xem nguồn

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à đó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

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ồn

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

của list@rhsoft. net — xem nguồn

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
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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2
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;

của Marco Pivetta — xem nguồn

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
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ại

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
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ập

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 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;

của list@rhsoft. net — xem nguồn

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
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ết

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

của Marco Pivetta — xem nguồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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 David Rodrigues — xem nguồn

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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;

​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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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 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-refe
từ khóa/từ khóa/chỉ đọc

--
David Coleues

--
David Coleues

của Kalle Sommer Nielsen — xem nguồn

chưa đọc

29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com

chỉ đọc $number =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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

của Marco Pivetta — xem nguồn

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', 'http://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ếu
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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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ố 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

của Dan Ackroyd — xem nguồn

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

của Marco Pivetta — xem nguồn

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à đó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

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ồn

chưa đọc

29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com

chỉ đọc $number =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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

của Marco Pivetta — xem nguồn

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', 'http://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ếu
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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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ố 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

của Dan Ackroyd — xem nguồn

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

của Marco Pivetta — xem nguồn

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à đó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

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 Marco Pivetta — xem nguồn

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', 'http://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ếu
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 =

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
6;
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

  1. "cuối cùng" được sử dụng trên một số ngôn ngữ (tôi đoán là Java, C ++);
  2. 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ố 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

của Dan Ackroyd — xem nguồn

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

của Marco Pivetta — xem nguồn

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à đó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

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 Dan Ackroyd — xem nguồn

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

của Marco Pivetta — xem nguồn

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à đó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

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 Marco Pivetta — xem nguồn

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à đó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

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ồn

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

của list@rhsoft. net — xem nguồn

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
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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2
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;

của Marco Pivetta — xem nguồn

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
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ại

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
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ập

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 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;

của list@rhsoft. net — xem nguồn

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
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ết

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

của Marco Pivetta — xem nguồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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ồn

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
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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2
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;

của Marco Pivetta — xem nguồn

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
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ại

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
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ập

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 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;

của list@rhsoft. net — xem nguồn

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
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ết

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

của Marco Pivetta — xem nguồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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ồn

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
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ại

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
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ập

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 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;

của list@rhsoft. net — xem nguồn

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
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ết

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

của Marco Pivetta — xem nguồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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ồn

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
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ết

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', 'http://localhost');
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

của Marco Pivetta — xem nguồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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ồn

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à
chậm, cả trong xác định và truy cập

Hai điều ở đây

  1. đừ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
  2. 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/

của list@rhsoft. net — xem nguồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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ồn

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
mailto:[email protected]
đã viết

in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access

Hai điều ở đây

  1. đừ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

  1. 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

của David Rodrigues — xem nguồn

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

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', 'http://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ế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ết

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

  1. đừ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
  2. 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

của Marco Pivetta — xem nguồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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ồn

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
đã viết

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', 'http://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ế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', 'http://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ạ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

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/

Biến cuối cùng trong PHP là gì?

Từ khóa cuối cùng là được sử dụng để ngăn một lớp được kế thừa và ngăn phương thức kế thừa bị ghi đè .

Làm thế nào để sử dụng cuối cùng trong PHP?

Từ khóa final ngăn không cho các lớp con ghi đè một phương thức hoặc hằng số bằng cách thêm tiền tố vào định nghĩa bằng final . Nếu bản thân lớp đang được định nghĩa cuối cùng thì nó không thể được mở rộng. Ghi chú. Thuộc tính không thể được khai báo cuối cùng. chỉ các lớp, phương thức và hằng số (kể từ PHP 8. 1. 0) có thể được tuyên bố là cuối cùng.

Chúng ta có thể khai báo biến là cuối cùng không?

Biến cuối cùng chỉ có thể được khởi tạo rõ ràng một lần . Một biến tham chiếu được khai báo là final không bao giờ có thể được gán lại để tham chiếu đến một đối tượng khác. Tuy nhiên, dữ liệu bên trong đối tượng có thể được thay đổi. Vì vậy, trạng thái của đối tượng có thể được thay đổi nhưng không phải là tham chiếu.

Điều gì làm cho một biến cuối cùng?

biến cuối cùng . Lưu ý biến không nhất thiết phải được khởi tạo lúc khai báo. Nếu nó được khai báo nhưng chưa được khởi tạo, nó được gọi là biến cuối cùng trống