Biến cuối cùng php

Từ khóa final ngăn các lớp con ghi đè một phương thức bằng cách thêm tiền tố vào định nghĩa bằng final. Điều đó có nghĩa là nếu chúng ta định nghĩa một phương thức bằng lệnh cuối cùng thì nó sẽ ngăn chúng ta ghi đè phương thức đó

show[100,100];
?>

Đầu ra Lỗi nghiêm trọng. Không thể ghi đè phương thức cuối cùng A. hiển thị [] trong C. xampplitehtdocs1aa. php trên dòng 18

Trong ví dụ trên Lớp A là lớp cha của tôi. Trong đó phương thức hiển thị được đánh dấu bằng lệnh cuối cùng. Điều đó có nghĩa là phương thức show không thể ghi đè lên bất kỳ lớp con nào của nó.

Để xem lỗi lớp B xác định được mở rộng bởi A. Nó có nghĩa là B là lớp con của A. Trong B, nó đang cố xác định phương thức cuối cùng [hiển thị] trong lớp B. Cái nào sẽ tạo ra lỗi nghiêm trọng với thông báo Không thể ghi đè phương thức cuối cùng A. buổi bieu diễn[]. Điều đó có nghĩa là chúng ta không thể định nghĩa phương thức cuối cùng của lớp cha trong lớp con của nó

Sử dụng cuối cùng trước lớp

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. Điều đó có nghĩa là khi chúng ta định nghĩa một lớp bằng final thì nó sẽ không cho phép định nghĩa lớp con của nó

show[100,100];

?>

Đầu ra Lỗi nghiêm trọng. Lớp B có thể không kế thừa từ lớp cuối cùng [A] trong C. xampplitehtdocs1aa. php trên dòng 17

Trong ví dụ trên, lớp A định nghĩa bằng lệnh cuối cùng. Nó có nghĩa là lớp này không thể được mở rộng. Khi lớp B được định nghĩa với phần mở rộng A [có nghĩa là B là lớp con của A]. Nhưng nó tạo ra lỗi với thông báo "Lớp B có thể không kế thừa từ lớp cuối cùng [A]". Điều đó có nghĩa là nó sẽ không cho phép tạo bất kỳ lớp con nào của A. Điều đó có nghĩa là lớp cuối cùng không thể được kế thừa

  • 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

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 này không bao giờ thay đổi 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 biến đó một lần, sau đó tôi không thể thay đổi biến đó [nhưng tôi có thể
thao tác với thể hiện, .

Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy?

$number cuối cùng = 123;
$number = 456; . bạn thay đổi thay đổi các biến cuối cùng.

cuối cùng $object = new stdClass;
$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 cập nhật trực tiếp [tham chiếu mới]. Điều này giúp 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 biến cuối cùng có thể hữu ích để thực hiện một số
cải tiến nội bộ 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à loại "linh hoạt"
trong nội bộ [tôi đoán đó là biến zval .

Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363

--
David Rodrigues

5 năm trước bởi 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 này không bao giờ thay đổi 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 biến đó một lần, sau đó tôi không thể thay đổi biến đó [nhưng tôi có thể
thao tác với thể hiệ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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

$number cuối cùng = 123;
$number = 456; . bạn thay đổi thay đổi các biến cuối cùng.

cuối cùng $object = new stdClass;
$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 cập nhật trực tiếp [tham chiếu mới]. Điều này giúp 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 nên là RFC cho từ khóa chỉ đọc nếu có

Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số
cải tiến nội bộ 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à loại "linh hoạt"
trong nội bộ [tôi đoán đó là biến zval .

Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363

--
David Rodrigues

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-reference/keywords/readonly

--
trân trọng,

Kalle Sommer Nielsen
kalle@php. lưới

5 năm trước bởi Niklas Keller — xem nguồn

chưa đọc

2017-06-28 18. 59 GMT+02. 00 Kalle Sommer Nielsen kalle@php. mạng lưới

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
này không bao giờ thay đổi 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 biến đó một lần, sau đó tôi không thể thay đổi biến đó [nhưng tôi
can
manipulate the instance, without issues].

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, hằng số không hỗ trợ các loại không vô hướng, chẳng hạn như mảng hoặ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 thực sự sẽ giải quyết vấn đề ở khía cạnh đối tượng của mọi thứ
có thể là giới thiệu từ khóa "chỉ đọc" hoặc tương tự, chẳng hạn như
từ khóa

$number cuối cùng = 123;
$number = 456; . bạn thay đổi thay đổi các biến cuối cùng.

cuối cùng $object = new stdClass;
$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 cập nhật trực tiếp [tham chiếu mới]. Điều này giúp 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 nên là RFC cho từ khóa chỉ đọc nếu có

Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số
cải tiến nội bộ về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Ý
có nghĩa là,
vì biến không thể sửa đổi nên nó không cần phải là loại "linh hoạt"
.

Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363

--
David Rodrigues

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham chiếu/từ khóa/chỉ đọc

--
trân trọng,

Kalle Sommer Nielsen
kalle@php. lưới

5 năm trước bởi 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. lưới

5 năm trước bởi David Rodrigues — xem nguồn

chưa đọc

28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. mạng lưới

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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

.

Không trên thực tế. ​. [

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết".

Mặc dù các hằng số là thành viên của lớp [hoặc toàn cầu], biến cuối cùng chỉ là
biến bị chặn để ghi lại và nó có thể được khởi tạo với dữ liệu mới
content every time that the context is called [eg. a function].

Ví dụ [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
this function]:

hàm ghi [thông điệp $ cuối cùng] { echo $message; .
write["Hello"];
write["World"];
// Write "Hello World" on ouput.

Hoặc sau đó

function RandomNumber[] {
$number cuối cùng =

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

// $number = mt_rand_again[]; .
}
randomNumber[];
​ // Viết "0. 123"
Số ngẫu nhiên[];
​ // Viết "0. 456"

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham chiếu/từ khóa/chỉ đọc

--
David Rodrigues

5 năm trước bởi 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
Kalle. 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. 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 * .

​I agree that "readonly" is a better keyword, but we have to points here:

  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. mạng lưới

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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

.

Không trên thực tế. ​. [

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết".

Mặc dù các hằng số là thành viên của lớp [hoặc toàn cầu], biến cuối cùng chỉ là
biến bị chặn để ghi lại và nó có thể được khởi tạo với dữ liệu mới
content every time that the context is called [eg. a function].

Ví dụ [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
this function]:

hàm ghi [thông điệp $ cuối cùng] { echo $message; .
write["Hello"];
write["World"];
// Write "Hello World" on ouput.

Hoặc sau đó

function RandomNumber[] {
$number cuối cùng =

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

// $number = mt_rand_again[]; .
}
randomNumber[];
​ // Viết "0. 123"
Số ngẫu nhiên[];
​ // Viết "0. 456"

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
rence/keywords/readonly

--
David Rodrigues

--
David Rodrigues

5 năm trước bởi Kalle Sommer Nielsen — xem nguồn

chưa đọc

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

readonly $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 "readonly" 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 ta 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à không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 thuộc tính đó như .

lớp A {
chỉ đọc được bảo vệ $b;

hàm công khai __construct[] {
$this->b = 'C';
}
}

lớp B mở rộng A {
hàm công khai read[] {
echo $this->b;
}

hàm công khai write[] {
$this->b = 'D';
}
}

$b = B mới;

$b->read[];
$b->write[]; // bar = $something;
return $instance;
}
}

Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi 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 này không bao giờ thay đổi 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 biến đó một lần, sau đó tôi không thể thay đổi biến đó [nhưng tôi có thể
thao tác với thể hiệ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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

$number cuối cùng = 123;
$number = 456; . bạn thay đổi thay đổi các biến cuối cùng.

cuối cùng $object = new stdClass;
$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 cập nhật trực tiếp [tham chiếu mới]. Điều này giúp 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 nên là RFC cho từ khóa chỉ đọc nếu có

Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số
cải tiến nội bộ 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à loại "linh hoạt"
trong nội bộ [tôi đoán đó là biến zval .

Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363

--
David Rodrigues

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-reference/keywords/readonly

--
trân trọng,

Kalle Sommer Nielsen
kalle@php. lưới

5 năm trước bởi Niklas Keller — xem nguồn

chưa đọc

2017-06-28 18. 59 GMT+02. 00 Kalle Sommer Nielsen kalle@php. mạng lưới

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
này không bao giờ thay đổi 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 biến đó một lần, sau đó tôi không thể thay đổi biến đó [nhưng tôi
can
manipulate the instance, without issues].

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, hằng số không hỗ trợ các loại không vô hướng, chẳng hạn như mảng hoặ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 thực sự sẽ giải quyết vấn đề ở khía cạnh đối tượng của mọi thứ
có thể là giới thiệu từ khóa "chỉ đọc" hoặc tương tự, chẳng hạn như
từ khóa

$number cuối cùng = 123;
$number = 456; . bạn thay đổi thay đổi các biến cuối cùng.

cuối cùng $object = new stdClass;
$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 cập nhật trực tiếp [tham chiếu mới]. Điều này giúp 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 nên là RFC cho từ khóa chỉ đọc nếu có

Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số
cải tiến nội bộ về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Ý
có nghĩa là,
vì biến không thể sửa đổi nên nó không cần phải là loại "linh hoạt"
.

Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363

--
David Rodrigues

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham chiếu/từ khóa/chỉ đọc

--
trân trọng,

Kalle Sommer Nielsen
kalle@php. lưới

5 năm trước bởi 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. lưới

5 năm trước bởi David Rodrigues — xem nguồn

chưa đọc

28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. mạng lưới

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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

.

Không trên thực tế. ​. [

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết".

Mặc dù các hằng số là thành viên của lớp [hoặc toàn cầu], biến cuối cùng chỉ là
biến bị chặn để ghi lại và nó có thể được khởi tạo với dữ liệu mới
content every time that the context is called [eg. a function].

Ví dụ [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
this function]:

hàm ghi [thông điệp $ cuối cùng] { echo $message; .
write["Hello"];
write["World"];
// Write "Hello World" on ouput.

Hoặc sau đó

function RandomNumber[] {
$number cuối cùng =

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

// $number = mt_rand_again[]; .
}
randomNumber[];
​ // Viết "0. 123"
Số ngẫu nhiên[];
​ // Viết "0. 456"

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham chiếu/từ khóa/chỉ đọc

--
David Rodrigues

5 năm trước bởi 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
Kalle. 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. 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 * .

​I agree that "readonly" is a better keyword, but we have to points here:

  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. mạng lưới

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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

.

Không trên thực tế. ​. [

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết".

Mặc dù các hằng số là thành viên của lớp [hoặc toàn cầu], biến cuối cùng chỉ là
biến bị chặn để ghi lại và nó có thể được khởi tạo với dữ liệu mới
content every time that the context is called [eg. a function].

Ví dụ [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
this function]:

hàm ghi [thông điệp $ cuối cùng] { echo $message; .
write["Hello"];
write["World"];
// Write "Hello World" on ouput.

Hoặc sau đó

function RandomNumber[] {
$number cuối cùng =

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

// $number = mt_rand_again[]; .
}
randomNumber[];
​ // Viết "0. 123"
Số ngẫu nhiên[];
​ // Viết "0. 456"

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
rence/keywords/readonly

--
David Rodrigues

--
David Rodrigues

5 năm trước bởi Kalle Sommer Nielsen — xem nguồn

chưa đọc

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

readonly $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 "readonly" 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 ta 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à không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 thuộc tính đó như .

lớp A {
chỉ đọc được bảo vệ $b;

hàm công khai __construct[] {
$this->b = 'C';
}
}

lớp B mở rộng A {
hàm công khai read[] {
echo $this->b;
}

hàm công khai write[] {
$this->b = 'D';
}
}

$b = B mới;

$b->read[];
$b->write[]; // bar = $something;
return $instance;
}
}

Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi Niklas Keller — xem nguồn

chưa đọc

2017-06-28 18. 59 GMT+02. 00 Kalle Sommer Nielsen kalle@php. mạng lưới

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
này không bao giờ thay đổi 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 biến đó một lần, sau đó tôi không thể thay đổi biến đó [nhưng tôi
can
manipulate the instance, without issues].

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, hằng số không hỗ trợ các loại không vô hướng, chẳng hạn như mảng hoặ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 thực sự sẽ giải quyết vấn đề ở khía cạnh đối tượng của mọi thứ
có thể là giới thiệu từ khóa "chỉ đọc" hoặc tương tự, chẳng hạn như
từ khóa

$number cuối cùng = 123;
$number = 456; . bạn thay đổi thay đổi các biến cuối cùng.

cuối cùng $object = new stdClass;
$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 cập nhật trực tiếp [tham chiếu mới]. Điều này giúp 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 nên là RFC cho từ khóa chỉ đọc nếu có

Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số
cải tiến nội bộ về ngôn ngữ [nhưng nó có thể là BC cho nội bộ PHP]. Ý
có nghĩa là,
vì biến không thể sửa đổi nên nó không cần phải là loại "linh hoạt"
.

Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363

--
David Rodrigues

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham chiếu/từ khóa/chỉ đọc

--
trân trọng,

Kalle Sommer Nielsen
kalle@php. lưới

5 năm trước bởi 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. lưới

5 năm trước bởi David Rodrigues — xem nguồn

chưa đọc

28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. mạng lưới

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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

.

Không trên thực tế. ​. [

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết".

Mặc dù các hằng số là thành viên của lớp [hoặc toàn cầu], biến cuối cùng chỉ là
biến bị chặn để ghi lại và nó có thể được khởi tạo với dữ liệu mới
content every time that the context is called [eg. a function].

Ví dụ [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
this function]:

hàm ghi [thông điệp $ cuối cùng] { echo $message; .
write["Hello"];
write["World"];
// Write "Hello World" on ouput.

Hoặc sau đó

function RandomNumber[] {
$number cuối cùng =

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

// $number = mt_rand_again[]; .
}
randomNumber[];
​ // Viết "0. 123"
Số ngẫu nhiên[];
​ // Viết "0. 456"

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-
tham chiếu/từ khóa/chỉ đọc

--
David Rodrigues

5 năm trước bởi 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
Kalle. 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. 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 * .

​I agree that "readonly" is a better keyword, but we have to points here:

  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. mạng lưới

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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

.

Không trên thực tế. ​. [

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết".

Mặc dù các hằng số là thành viên của lớp [hoặc toàn cầu], biến cuối cùng chỉ là
biến bị chặn để ghi lại và nó có thể được khởi tạo với dữ liệu mới
content every time that the context is called [eg. a function].

Ví dụ [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
this function]:

hàm ghi [thông điệp $ cuối cùng] { echo $message; .
write["Hello"];
write["World"];
// Write "Hello World" on ouput.

Hoặc sau đó

function RandomNumber[] {
$number cuối cùng =

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

// $number = mt_rand_again[]; .
}
randomNumber[];
​ // Viết "0. 123"
Số ngẫu nhiên[];
​ // Viết "0. 456"

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
rence/keywords/readonly

--
David Rodrigues

--
David Rodrigues

5 năm trước bởi Kalle Sommer Nielsen — xem nguồn

chưa đọc

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

readonly $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 "readonly" 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 ta 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à không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 thuộc tính đó như .

lớp A {
chỉ đọc được bảo vệ $b;

hàm công khai __construct[] {
$this->b = 'C';
}
}

lớp B mở rộng A {
hàm công khai read[] {
echo $this->b;
}

hàm công khai write[] {
$this->b = 'D';
}
}

$b = B mới;

$b->read[];
$b->write[]; // bar = $something;
return $instance;
}
}

Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi 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
Kalle. 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. 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 * .

​I agree that "readonly" is a better keyword, but we have to points here:

  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. mạng lưới

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 vấn đề đó ở phía đối tượng của sự vật
would be the introduction of a "readonly" keyword or similar, like
that of C#[2]

.

Không trên thực tế. ​. [

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe giống như một "const", và đúng là như vậy, nhưng "không phải như chúng ta biết".

Mặc dù các hằng số là thành viên của lớp [hoặc toàn cầu], biến cuối cùng chỉ là
biến bị chặn để ghi lại và nó có thể được khởi tạo với dữ liệu mới
content every time that the context is called [eg. a function].

Ví dụ [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
this function]:

hàm ghi [thông điệp $ cuối cùng] { echo $message; .
write["Hello"];
write["World"];
// Write "Hello World" on ouput.

Hoặc sau đó

function RandomNumber[] {
$number cuối cùng =

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

// $number = mt_rand_again[]; .
}
randomNumber[];
​ // Viết "0. 123"
Số ngẫu nhiên[];
​ // Viết "0. 456"

[1] http. //php. net/hằng số
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-refe
rence/keywords/readonly

--
David Rodrigues

--
David Rodrigues

5 năm trước bởi Kalle Sommer Nielsen — xem nguồn

chưa đọc

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

readonly $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 "readonly" 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 ta 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à không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 thuộc tính đó như .

lớp A {
chỉ đọc được bảo vệ $b;

hàm công khai __construct[] {
$this->b = 'C';
}
}

lớp B mở rộng A {
hàm công khai read[] {
echo $this->b;
}

hàm công khai write[] {
$this->b = 'D';
}
}

$b = B mới;

$b->read[];
$b->write[]; // b = 'C';
}
}

lớp B mở rộng A {
hàm công khai read[] {
echo $this->b;
}

hàm công khai write[] {
$this->b = 'D';
}
}

$b = B mới;

$b->read[];
$b->write[]; // bar;

$bar = 'taz';

var_dump[$foo->bar];

Loại mã xấu này sẽ phá vỡ

Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn
không sửa đổi tham chiếu. 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, điều đó
về cơ bản ngăn việc giảm số lượng tham chiếu trên cụ thể đó
property. I think this kills the usefulness of the feature, but it's indeed
vẫn hữu ích.

Tôi không hiểu

Mô hình tương đối phổ biến

class Foo {
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}

Xem thêm http. // verraes. net/2014/06/named-constructors-in-php/

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi 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

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

vì các hằng số đắt tiền trong PHP khi "define[]" là một hàm
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 đó thực sự là thời gian biên dịch thì
các mục sau sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong một
if-statement when you in fact can CONCAT two with

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 set constant
which are part of a if-statement themself

if[PHP_SAPI. == 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define . MY_SERVER_NAME. $rh_port];
}
else
{
define['MY_PHP_SELF', ' . tên cơ sở[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', 'http. //localhost'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;

5 năm trước bởi 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ố toàn hệ thống, nó 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

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

vì hằng số đắt tiền trong PHP khi "define[]" là 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 đó thực sự là thời gian biên dịch thì
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
in fact can CONCAT two with

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 set constant which are part of a
if-statement themself

if[PHP_SAPI. == 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define . MY_SERVER_NAME. $rh_port];
}
else
{
define['MY_PHP_SELF', ' . tên cơ sở[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', 'http. //localhost'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;

5 năm trước bởi 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ố toàn hệ thống, nó 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 nhất thiết cần nó là một biến
thì nếu bạn biết giá trị sẽ không đổi" và miễn là các hằng số
in PHP are a] very expensive and b] "const" pretends to be compile time
which is provable wrong with my sample code are terrible to use

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa 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. mạng"
wrote:

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

5 năm trước bởi Marco Pivetta — xem nguồn

chưa đọc

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

5 năm trước bởi 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. danh sách@rhsoft. net
đã 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 hình ảnh cơ bản cho bất kỳ sự so sánh nào.
    về cơ bản là [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
    có thể nghĩ ra trước khi 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à. Các thuộc tính
    cuối cùng 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] sang dựa trên thuộc tính công khai
    [less overhead, also in writing]

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
opcode đắt tiền và các lệnh gọi hàm vô dụng, tính chính xác của chương trình là một
hoàn toàn khác và

5 năm trước bởi 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

"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ờ
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
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 bối cảnh thân mật" và "tên tôi là Rodrigues và sẽ là tất cả
the time Rodrigues when I am on a forma context", on same "document".
https. //pastebin. com/QCrmrZQe

Đúng là chúng tôi có thể sử dụng lại từ khóa final, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức và lớp cuối cùng, điều đó có nghĩa là không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 hoặc
hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
có nghĩa là không thể thay thế nó .
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 mọi trường hợp [đối với lớp, hàm hoặc biến], thông tin
không thể bị 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 thuộc tính đó như .

Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác
. 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
một cuộc 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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 thuộc tính
cuối cùng 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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. https. //pastebin. com/Ua6DFUC1

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để phân biệt
    việc sử dụng "không được khởi tạo", "không xác định" và "đóng băng" trong trường hợp sử dụng thuộc tính cuối cùng
    usage, without breaking current property access semantics

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //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.

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

--
David Rodrigues

5 năm trước bởi 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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
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 tham chiếu. 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, điều đó
về cơ bản ngăn việc giảm số lượng tham chiếu trên cụ thể đó
property. I think this kills the usefulness of the feature, but it's indeed
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

class Foo {
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}

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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi 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ố toàn hệ thống, nó 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

Các keywork "cuối cùng" tạo ra một giá trị biến "phạm vi cục bộ" bị "chặn
viết lại" sau khi khởi tạo nó.
Được rồi, nó nghe 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

vì hằng số đắt tiền trong PHP khi "define[]" là 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 đó thực sự là thời gian biên dịch thì
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
in fact can CONCAT two with

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
2 set constant which are part of a
if-statement themself

if[PHP_SAPI. == 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define . MY_SERVER_NAME. $rh_port];
}
else
{
define['MY_PHP_SELF', ' . tên cơ sở[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', 'http. //localhost'];
}
const rh_phpself = rh_serverurl. MY_PHP_SELF;

5 năm trước bởi 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ố toàn hệ thống, nó 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 nhất thiết cần nó là một biến
thì nếu bạn biết giá trị sẽ không đổi" và miễn là các hằng số
in PHP are a] very expensive and b] "const" pretends to be compile time
which is provable wrong with my sample code are terrible to use

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa 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. mạng"
wrote:

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

5 năm trước bởi Marco Pivetta — xem nguồn

chưa đọc

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

5 năm trước bởi 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. danh sách@rhsoft. net
đã 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 hình ảnh cơ bản cho bất kỳ sự so sánh nào.
    về cơ bản là [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
    có thể nghĩ ra trước khi 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à. Các thuộc tính
    cuối cùng 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] sang dựa trên thuộc tính công khai
    [less overhead, also in writing]

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
opcode đắt tiền và các lệnh gọi hàm vô dụng, tính chính xác của chương trình là một
hoàn toàn khác và

5 năm trước bởi 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

"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ờ
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
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 bối cảnh thân mật" và "tên tôi là Rodrigues và sẽ là tất cả
the time Rodrigues when I am on a forma context", on same "document".
https. //pastebin. com/QCrmrZQe

Đúng là chúng tôi có thể sử dụng lại từ khóa final, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức và lớp cuối cùng, điều đó có nghĩa là không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 hoặc
hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
có nghĩa là không thể thay thế nó .
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 mọi trường hợp [đối với lớp, hàm hoặc biến], thông tin
không thể bị 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 thuộc tính đó như .

Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác
. 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
một cuộc 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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 thuộc tính
cuối cùng 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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. https. //pastebin. com/Ua6DFUC1

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để phân biệt
    việc sử dụng "không được khởi tạo", "không xác định" và "đóng băng" trong trường hợp sử dụng thuộc tính cuối cùng
    usage, without breaking current property access semantics

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //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.

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

--
David Rodrigues

5 năm trước bởi 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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
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 tham chiếu. 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, điều đó
về cơ bản ngăn việc giảm số lượng tham chiếu trên cụ thể đó
property. I think this kills the usefulness of the feature, but it's indeed
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

class Foo {
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}

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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi 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ố toàn hệ thống, nó 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 nhất thiết cần nó là một biến
thì nếu bạn biết giá trị sẽ không đổi" và miễn là các hằng số
in PHP are a] very expensive and b] "const" pretends to be compile time
which is provable wrong with my sample code are terrible to use

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa 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. mạng"
wrote:

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;

5 năm trước bởi Marco Pivetta — xem nguồn

chưa đọc

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

5 năm trước bởi 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. danh sách@rhsoft. net
đã 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 hình ảnh cơ bản cho bất kỳ sự so sánh nào.
    về cơ bản là [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
    có thể nghĩ ra trước khi 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à. Các thuộc tính
    cuối cùng 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] sang dựa trên thuộc tính công khai
    [less overhead, also in writing]

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
opcode đắt tiền và các lệnh gọi hàm vô dụng, tính chính xác của chương trình là một
hoàn toàn khác và

5 năm trước bởi 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

"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ờ
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
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 bối cảnh thân mật" và "tên tôi là Rodrigues và sẽ là tất cả
the time Rodrigues when I am on a forma context", on same "document".
https. //pastebin. com/QCrmrZQe

Đúng là chúng tôi có thể sử dụng lại từ khóa final, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức và lớp cuối cùng, điều đó có nghĩa là không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 hoặc
hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
có nghĩa là không thể thay thế nó .
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 mọi trường hợp [đối với lớp, hàm hoặc biến], thông tin
không thể bị 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 thuộc tính đó như .

Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác
. 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
một cuộc 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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 thuộc tính
cuối cùng 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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. https. //pastebin. com/Ua6DFUC1

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để phân biệt
    việc sử dụng "không được khởi tạo", "không xác định" và "đóng băng" trong trường hợp sử dụng thuộc tính cuối cùng
    usage, without breaking current property access semantics

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //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.

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

--
David Rodrigues

5 năm trước bởi 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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
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 tham chiếu. 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, điều đó
về cơ bản ngăn việc giảm số lượng tham chiếu trên cụ thể đó
property. I think this kills the usefulness of the feature, but it's indeed
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

class Foo {
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}

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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi Marco Pivetta — xem nguồn

chưa đọc

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

5 năm trước bởi 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. danh sách@rhsoft. net
đã 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 hình ảnh cơ bản cho bất kỳ sự so sánh nào.
    về cơ bản là [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
    có thể nghĩ ra trước khi 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à. Các thuộc tính
    cuối cùng 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] sang dựa trên thuộc tính công khai
    [less overhead, also in writing]

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
opcode đắt tiền và các lệnh gọi hàm vô dụng, tính chính xác của chương trình là một
hoàn toàn khác và

5 năm trước bởi 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

"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ờ
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
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 bối cảnh thân mật" và "tên tôi là Rodrigues và sẽ là tất cả
the time Rodrigues when I am on a forma context", on same "document".
https. //pastebin. com/QCrmrZQe

Đúng là chúng tôi có thể sử dụng lại từ khóa final, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức và lớp cuối cùng, điều đó có nghĩa là không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 hoặc
hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
có nghĩa là không thể thay thế nó .
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 mọi trường hợp [đối với lớp, hàm hoặc biến], thông tin
không thể bị 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 thuộc tính đó như .

Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác
. 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
một cuộc 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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 thuộc tính
cuối cùng 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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. https. //pastebin. com/Ua6DFUC1

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để phân biệt
    việc sử dụng "không được khởi tạo", "không xác định" và "đóng băng" trong trường hợp sử dụng thuộc tính cuối cùng
    usage, without breaking current property access semantics

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //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.

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

--
David Rodrigues

5 năm trước bởi 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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
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 tham chiếu. 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, điều đó
về cơ bản ngăn việc giảm số lượng tham chiếu trên cụ thể đó
property. I think this kills the usefulness of the feature, but it's indeed
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

class Foo {
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}

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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi 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. danh sách@rhsoft. net
đã 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 hình ảnh cơ bản cho bất kỳ sự so sánh nào.
    về cơ bản là [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi
    có thể nghĩ ra trước khi 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à. Các thuộc tính
    cuối cùng 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] sang dựa trên thuộc tính công khai
    [less overhead, also in writing]

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
opcode đắt tiền và các lệnh gọi hàm vô dụng, tính chính xác của chương trình là một
hoàn toàn khác và

5 năm trước bởi 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 nhất thiết phải
nó vẫn là một biến nếu bạn biết giá trị sẽ là
constant, of course besides global visibility or in iterations

"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ờ
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
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 bối cảnh thân mật" và "tên tôi là Rodrigues và sẽ là tất cả
the time Rodrigues when I am on a forma context", on same "document".
https. //pastebin. com/QCrmrZQe

Đúng là chúng tôi có thể sử dụng lại từ khóa final, nhưng hãy nghĩ về nó theo cách này,
chúng tôi có các phương thức và lớp cuối cùng, điều đó có nghĩa là không thể
overridden/extended respectively, if the final keyword then would also
apply to variables but it would mean they could not be written to,
that would create a WTF-factor.

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 hoặc
hàm có nghĩa là nó không thể bị ghi đè hoặc "cuối cùng" trong các biến,
có nghĩa là không thể thay thế nó .
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 mọi trường hợp [đối với lớp, hàm hoặc biến], thông tin
không thể bị 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 thuộc tính đó như .

Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác
. 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
một cuộc 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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 thuộc tính
cuối cùng 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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. https. //pastebin. com/Ua6DFUC1

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để phân biệt
    việc sử dụng "không được khởi tạo", "không xác định" và "đóng băng" trong trường hợp sử dụng thuộc tính cuối cùng
    usage, without breaking current property access semantics

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //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.

ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng
chậm, cả về định nghĩa và truy cập

Hai điều ở đây

  1. đừng bao giờ xem xét hình ảnh cơ bản cho bất kỳ sự so sánh nào. nó
    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ĩ ra trước khi malborge
  2. tốc độ không liên quan trong phạm vi này. chương trình đúng là. Các thuộc tính
    cuối cùng sẽ cho phép chuyển đổi các biểu diễn đối tượng giá trị từ trình truy cập
    [getter] dựa trên logic [cực kỳ chậm] sang dựa trên thuộc tính công khai [less
    overhead, also in writing].

Marco Pivetta

http. //twitter. com/Ocramius

http. // ocramius. github. com/

--
David Rodrigues

5 năm trước bởi 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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
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 tham chiếu. 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, điều đó
về cơ bản ngăn việc giảm số lượng tham chiếu trên cụ thể đó
property. I think this kills the usefulness of the feature, but it's indeed
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

class Foo {
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}

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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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/

5 năm trước bởi 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', '//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 định nghĩa đó từng xuất hiện trong ngôn ngữ.
Tuy nhiên, vẫn còn một vài điểm khó khăn.

  • Tham chiếu đến thuộc tính [bạn không thể tham chiếu đến thuộc tính cuối cùng
    nữa và đó thực sự là ngắt BC đối với bất kỳ thứ gì sử dụng phản chiếu
    và ràng buộc phạm vi đóng]

Tôi không biết mình 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
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 tham chiếu. 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, điều đó
về cơ bản ngăn việc giảm số lượng tham chiếu trên cụ thể đó
property. I think this kills the usefulness of the feature, but it's indeed
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

class Foo {
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}

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 cách nào để bạn xác định liệu một thuộc tính có được ghi vào
    "thời gian hợp lệ cuối cùng" trước khi đóng băng hay không

Bởi 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 sẽ viết giá trị ban đầu [và
được cố định]. 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?
do you seal the property if the value isn't overwritten? Would you disable
default values for properties that are declared

Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:

    2017-06-28 20:46 GMT+02:00 David Rodrigues
    :

        The "final" keyworks make a "local scope" variable value
        "blocked to
        rewrite" after instantiate it.
        Okay, it sounds like a "const", and it is, but "not as we
        known it".


    I get that, but I still don't understand why you would
    forcefully need
    it to be a variable still then if you know the value is gonna be
    constant, of course besides global visibility or in iterations


because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason

"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________

if[PHP_SAPI !== 'cli']
{
  define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
  define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
  define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
  define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
0?

  • Hủy đặt thuộc tính và cung cấp cơ chế thay thế để
    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
    việc sử dụng thuộc tính

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" [một 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[] hay thậm chí cho các biến như "is_FINAL[$var]". Mặt khác,
cuối cùng này không có ý nghĩa gì vì biến cuối cùng chỉ là một "mã
tài liệu" cho chính nhà phát triển biết rằng không được phép sửa đổi .
Có lẽ chúng ta cần triển khai chỉ dành cho ReflectionProperty [trường hợp đầu tiên],
vì nó có thể là một phần của mã mà người dùng không có quyền sửa đổi
[eg. vendor code]. //pastebin.com/jSjNQACd

API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy

class Foo {
private final $foo;
private $lazyLoad;
public function saySomething[] { . $this->foo;
return 'Saying ' . $this->foo;
}
hàm riêng __construct[] {
}
. self {
$instance = new self[];
$instance->foo = 'something';
return $instance . self {
}
public static function newLazy[] : self {
$instance = new self[];
$instance->lazyLoad = function [] use [$instance] {
$instance->foo = 'something lazy';
};
unset[$instance->foo];
return $instance;
}
public function __get[$name] {
[$this->lazyLoad][];
return $this->foo;
}
}

$foo = Foo. new[];
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 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 đè .

Cuối cùng có được hỗ trợ trong PHP không?

Từ khóa cuối cùng trong PHP được sử dụng trong các ngữ cảnh khác nhau. Từ khóa cuối cùng chỉ được sử dụng cho các phương thức và lớp . phương pháp cuối cùng. Khi một phương thức được khai báo là cuối cùng thì không thể thực hiện ghi đè lên phương thức đó. Các phương thức được khai báo là cuối cùng do một số lý do thiết kế.

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

Bạn có thể khai báo một biến trong bất kỳ phạm vi nào là biến cuối cùng . . Giá trị của một biến cuối cùng không thể thay đổi sau khi nó đã được khởi tạo. Các biến như vậy tương tự như các hằng trong các ngôn ngữ lập trình khác.

Lớp cuối cùng trong PHP là gì?

Định nghĩa lớp cuối cùng của PHP. Lớp cuối cùng trong PHP là một lớp ngăn việc ghi đè một phương thức của các lớp con chỉ bằng tiền tố cuối cùng với định nghĩa . Điều đó có nghĩa là nếu chúng ta đang định nghĩa một phương thức có tiền tố cuối cùng thì nó sẽ ngăn việc ghi đè phương thức đó.

Bài Viết Liên Quan

Toplist mới

Bài mới nhất

Chủ Đề