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
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
chưa đọc Chào David 2017-06-28 18. 10 GMT+02. 00 David Rodrigues david. proweb@gmail. com Xin chào nội bộ, Java hỗ trợ từ khóa "cuối cùng" trước một biến để xác định rằng Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy? Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]. $number cuối cùng = 123; cuối cùng $object = new stdClass; Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến Nó có hợp lệ cho một RFC không? Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân] Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363 -- [1] http. //php. net/hằng số -- Kalle Sommer Nielsen 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 Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy? Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]. Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng Trân trọng, Niklas điều thực sự sẽ giải quyết vấn đề ở khía cạnh đối tượng của mọi thứ $number cuối cùng = 123; cuối cùng $object = new stdClass; Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến Nó có hợp lệ cho một RFC không? Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân] Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363 -- [1] http. //php. net/hằng số -- Kalle Sommer Nielsen chưa đọc 28-06-2017 19. 37 GMT+02. 00 Niklas Keller me@kelunik. com Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng À vâng, tất nhiên, lời xin lỗi của tôi -- Kalle Sommer Nielsen chưa đọc 28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. 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]. . 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 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à Ví dụ [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi hàm ghi [thông điệp $ cuối cùng] { echo $message; . Hoặc sau đó function RandomNumber[] {
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, .
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 = 456; . bạn thay đổi thay đổi các biến cuối cùng.
$object->allowed = true; .
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.
rằng đây nên là RFC cho từ khóa chỉ đọc nếu có
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 .
David Rodrigues
[2] https. // tài liệu. Microsoft. com/en-us/dotnet/csharp/language-reference/keywords/readonly
trân trọng,
kalle@php. lưới
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].
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,
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 = 456; . bạn thay đổi thay đổi các biến cuối cùng.
$object->allowed = true; .
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.
rằng đây nên là RFC cho từ khóa chỉ đọc nếu có
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"
.
David Rodrigues
[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@php. lưới
trân trọng,
kalle@php. lưới
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]
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".
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].
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]:
write["Hello"];
write["World"];
// Write "Hello World" on ouput.
$number cuối cùng =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
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
chưa đọc 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]. . 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 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à Ví dụ [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi hàm ghi [thông điệp $ cuối cùng] { echo $message; . Hoặc sau đó function RandomNumber[] {
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:
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]
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".
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].
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]:
write["Hello"];
write["World"];
// Write "Hello World" on ouput.
$number cuối cùng =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
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
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com readonly $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "readonly" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây.
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn ý hơn.
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng 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/
- 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ôngBở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 "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ínhNó 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ồnchư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
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 Có một số lý do đặc biệt để PHP không hỗ trợ những thứ như vậy? Có vẻ như những gì bạn đang tìm kiếm ở đây thực sự là một hằng số[1]. Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng Trân trọng, Niklas điều thực sự sẽ giải quyết vấn đề ở khía cạnh đối tượng của mọi thứ $number cuối cùng = 123; cuối cùng $object = new stdClass; Tính năng này có ý nghĩa vì nó cho nhà phát triển biết rằng giá trị biến Nó có hợp lệ cho một RFC không? Mọi thứ thường hợp lệ đối với RFC, tuy nhiên tôi nghĩ [cá nhân] Tôi cũng nghĩ rằng biến cuối cùng có thể hữu ích để thực hiện một số Tài liệu tham khảo. https. //github. com/kalessil/phpinspectionsea/issues/363 -- [1] http. //php. net/hằng số -- Kalle Sommer Nielsen
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].
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,
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 = 456; . bạn thay đổi thay đổi các biến cuối cùng.
$object->allowed = true; .
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.
rằng đây nên là RFC cho từ khóa chỉ đọc nếu có
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"
.
David Rodrigues
[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@php. lưới
chưa đọc 28-06-2017 19. 37 GMT+02. 00 Niklas Keller me@kelunik. com Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng À vâng, tất nhiên, lời xin lỗi của tôi -- Kalle Sommer Nielsen
trân trọng,
kalle@php. lưới
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
chưa đọc 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].
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:
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
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com readonly $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "readonly" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây.
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn ý hơn.
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng 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/
- 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ôngBở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 "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ínhNó 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/
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
chưa đọc 28-06-2017 19. 37 GMT+02. 00 Niklas Keller me@kelunik. com Mảng được hỗ trợ, nhưng không hỗ trợ đối tượng À vâng, tất nhiên, lời xin lỗi của tôi -- Kalle Sommer Nielsen
trân trọng,
kalle@php. lưới
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
chưa đọc 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]. . 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 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à Ví dụ [lưu ý rằng tham số là "cuối cùng", sau đó tôi không thể sửa đổi hàm ghi [thông điệp $ cuối cùng] { echo $message; . Hoặc sau đó function RandomNumber[] {
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:
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]
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".
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].
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]:
write["Hello"];
write["World"];
// Write "Hello World" on ouput.
$number cuối cùng =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
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
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com readonly $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "readonly" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây.
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn ý hơn.
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng 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/
- 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ôngBở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 "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ínhNó 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ồnchư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:
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn hơn
2017-06-28 15. 46 GMT-03. 00 David Rodrigues david. proweb@gmail. com
28-06-2017 13. 59 GMT-03. 00 Kalle Sommer Nielsen kalle@php. 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 =6;in other languages like Visual Basic constants are fast, in PHP they are slow, both in define and access
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
chưa đọc 29-06-2017 1. 07 GMT+02. 00 David Rodrigues david. proweb@gmail. com readonly $number =
6;in other languages like Visual Basic constants are fast, in PHP they
are slow, both in define and access
Tôi đồng ý rằng "readonly" là một từ khóa tốt hơn, nhưng chúng ta phải chỉ ra ở đây.
- "cuối cùng" được sử dụng trên một số ngôn ngữ [tôi đoán là Java, C ++];
- từ khóa "cuối cùng" tồn tại trên PHP với hành vi "tương tự";
Nếu chúng ta có thể triển khai "chỉ đọc" thì cũng tốt, vì biến nó thành ẩn ý hơn.
Đúng là chúng ta có thể sử dụng lại từ khóa cuối cùng, nhưng hãy nghĩ về nó theo cách này,
chúng 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ỡ
- 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ôngBở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 "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ínhNó 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/
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 constantwhich 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;
chưa đọc Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi 29. 06. 2017 à 04. 50 schrieb Kalle Sommer Nielsen 2017-06-28 20. 46 GMT+02. 00 David Rodrigues david. proweb@gmail. com 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 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 vì hằng số đắt tiền trong PHP khi "define[]" là lệnh gọi hàm "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ì
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ó.
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".
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à "const" rất hạn chế mà không có lý do chính đáng
sẽ không hoạt động và vậy tại sao bạn không thể sử dụng 'const' trong câu lệnh if khi
in fact can CONCAT two with
2 set constant which are part of aAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
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;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn nhất thiết cần nó là một biến ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng 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"
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ó.
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
chậm, cả về định nghĩa và truy cập
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;
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 Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh 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 "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng 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, 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 Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác Công cụ sửa đổi 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 Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Bởi vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết 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 Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn và vâng, điều đó Tôi không hiểu Mô hình tương đối phổ biến class Foo { 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;"] 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 API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy class Foo { $foo = Foo. new[]; https. //3v4l. org/UPVWF Hy vọng rằng làm rõ nó Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
chậm, cả về định nghĩa và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ ra trước khi malborge
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].
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
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
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]
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à
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
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
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.
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.
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ư .
. 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.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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.
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]
cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng hay không
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
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
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
đã viết.
chậm, cả về định nghĩa và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ ra trước khi malborge
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].
David Rodrigues
đã viết.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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.
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]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
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.
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng hay không
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
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
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
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;
}
}
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
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 iterationsvì 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 with2 set constant which are part of aAm 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen: 2017-06-28 20:46 GMT+02:00 David Rodrigues : The "final" keyworks make a "local scope" variable value "blocked to rewrite" after instantiate it. Okay, it sounds like a "const", and it is, but "not as we known it". I get that, but I still don't understand why you would forcefully need it to be a variable still then if you know the value is gonna be constant, of course besides global visibility or in iterations because constants are expensive in PHP when "define[]" is a function call and "const" is very limited for no good reason "no good reason" because if it really would be compile time the following won't work and so why can't you use 'const' within a if-statement when you in fact can CONCAT two with `define[]` set constant which are part of a if-statement themself ____________________________________________________ if[PHP_SAPI !== 'cli'] { define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']]; define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port]; } else { define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]]; define['rh_serverurl', '//localhost']; } const rh_phpself = rh_serverurl . MY_PHP_SELF;
if-statement themselfif[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;
chưa đọc tôi 29. 06. 2017 ô 11. 08 schrieb Marco Pivetta Cuối cùng là về việc có dữ liệu bất biến. Bất biến không có nghĩa là nó là một tôi đã đề cập đến "tại sao bạn vẫn nhất thiết cần nó là một biến ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng 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"
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ó.
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
chậm, cả về định nghĩa và truy cập
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;
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 Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh 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 "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng 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, 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 Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác Công cụ sửa đổi 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 Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn không Tôi không hiểu Bởi vì PHP không hỗ trợ "khởi tạo biến" [ví dụ:. "$name;"] Nó sẽ được sửa đổi. Các biến cuối cùng vẫn là một biến, nhưng với 2017-06-29 6. 25 GMT-03. 00 Marco Pivetta ocramius@gmail. com Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. danh sách mạng@rhsoft. net ở các ngôn ngữ khác như Visual Basic, các hằng số rất nhanh, trong PHP chúng Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ -- chưa đọc Chào David, Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi Tôi không biết 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 Không, vấn đề là sau lớp Foo { công khai cuối cùng $bar = 'baz'; $foo = Foo mới; $bar = & $foo->bar; $bar = 'taz'; var_dump[$foo->bar]; Loại mã xấu này sẽ phá vỡ Bạn có thể sửa đổi mảng hoặc tài nguyên trên các biến cuối cùng, vì bạn Điều đó không làm cho nó trở thành "cuối cùng", mặc dù tôi hiểu ý của bạn và vâng, điều đó Tôi không hiểu Mô hình tương đối phổ biến class Foo { 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;"] 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 API phản ánh đã được cung cấp, nhưng vấn đề vẫn như vậy class Foo { $foo = Foo. new[]; https. //3v4l. org/UPVWF Hy vọng rằng làm rõ nó Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/
chậm, cả về định nghĩa và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ ra trước khi malborge
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].
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
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
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]
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à
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
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
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.
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.
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ư .
. 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.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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.
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]
cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
"thời gian hợp lệ cuối cùng" trước khi đóng băng hay không
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
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
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
đã viết.
chậm, cả về định nghĩa và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ ra trước khi malborge
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].
David Rodrigues
đã viết.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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.
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]
thuộc tính cuối cùng trên hàm tạo [dưới dạng Java]. https. //pastebin. com/bTZcUT33
không sửa đổi tham chiếu. https. //pastebin. com/D38wL8x7
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.
private final $bar;
private function __construct[] {/* hammertime */ }
public static function create[$something] : self {
$instance = new self[];
$instance->bar = $something;
return $instance;
}
}
"thời gian hợp lệ cuối cùng" trước khi đóng băng hay không
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
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
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
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;
}
}
var_dump[$foo->saySomething[]];
$lazyFoo = Foo. newLazy[];
var_dump[$lazyFoo->saySomething[]];
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;
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 Hai điều ở đây Marco Pivetta http. //twitter. com/Ocramius http. // ocramius. github. com/ chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh 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 "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng 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, 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 Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác Công cụ sửa đổi
chậm, cả về định nghĩa và truy cập
về cơ bản [ha. ] ví dụ tồi tệ nhất về ngôn ngữ lập trình mà tôi có thể
nghĩ ra trước khi malborge
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].
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
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
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]
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à
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
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
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.
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.
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ư .
. 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.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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ậpHai điều ở đây
- đừ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- 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
chưa đọc Chào David, Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi
đã viết.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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ôngBở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 "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ínhNó 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ồnchư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
- đừ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 - 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/
chưa đọc tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net Hai điều ở đây thôi đi - nhiều người cũng nói như vậy về PHP trong phạm vi nào là tốc độ không liên quan? phụ thuộc vào ứng dụng của bạn, trong phạm vi của tôi, tôi cố gắng tránh 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 "cuối cùng" không phải là "const". "cuối cùng" có nghĩa là trạng thái ban đầu sẽ không bao giờ Đúng là chúng 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, 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 Từ khóa chỉ đọc sẽ hoạt động với bất kỳ công cụ sửa đổi khả năng hiển thị nào, vì vậy Đối với tôi, từ khóa chỉ đọc nên được triển khai trong tương lai cho trường hợp khác Công cụ sửa đổi
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
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
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]
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à
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
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
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.
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.
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ư .
. 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.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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ậpHai điều ở đây
- đừ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- 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
chưa đọc Chào David, Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi
đã viết.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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ôngBở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 "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ínhNó 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ồnchưa đọc
tôi 29. 06. 2017 ô 11. 25 schrieb Marco Pivetta
Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 19 giờ sáng, danh sách@rhsoft. net
mailto. 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
- đừ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
- 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à
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
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen: 2017-06-28 20:46 GMT+02:00 David Rodrigues : The "final" keyworks make a "local scope" variable value "blocked to rewrite" after instantiate it. Okay, it sounds like a "const", and it is, but "not as we known it". I get that, but I still don't understand why you would forcefully need it to be a variable still then if you know the value is gonna be constant, of course besides global visibility or in iterations because constants are expensive in PHP when "define[]" is a function call and "const" is very limited for no good reason "no good reason" because if it really would be compile time the following won't work and so why can't you use 'const' within a if-statement when you in fact can CONCAT two with `define[]` set constant which are part of a if-statement themself ____________________________________________________ if[PHP_SAPI !== 'cli'] { define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']]; define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port]; } else { define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]]; define['rh_serverurl', '//localhost']; } const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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ậpHai điều ở đây
- đừ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- 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
chưa đọc Chào David, Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com Công cụ sửa đổi
đã viết.
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen:
2017-06-28 20:46 GMT+02:00 David Rodrigues
:
The "final" keyworks make a "local scope" variable value
"blocked to
rewrite" after instantiate it.
Okay, it sounds like a "const", and it is, but "not as we
known it".
I get that, but I still don't understand why you would
forcefully need
it to be a variable still then if you know the value is gonna be
constant, of course besides global visibility or in iterations
because constants are expensive in PHP when "define[]" is a function
call and "const" is very limited for no good reason
"no good reason" because if it really would be compile time the
following won't work and so why can't you use 'const' within a
if-statement when you in fact can CONCAT two with `define[]` set
constant which are part of a if-statement themself
____________________________________________________
if[PHP_SAPI !== 'cli']
{
define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']];
define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port];
}
else
{
define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]];
define['rh_serverurl', '//localhost'];
}
const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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ôngBở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 "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ínhNó 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ồnchưa đọc
Chào David,
Vào Thứ Năm, ngày 29 tháng 6 năm 2017 lúc 11. 58 giờ sáng, David Rodrigues david. proweb@gmail. com
đã viết.
Công cụ sửa đổi
0 có thể xung đột với các định nghĩa loại thuộc tính,Am 29.06.2017 um 04:50 schrieb Kalle Sommer Nielsen: 2017-06-28 20:46 GMT+02:00 David Rodrigues : The "final" keyworks make a "local scope" variable value "blocked to rewrite" after instantiate it. Okay, it sounds like a "const", and it is, but "not as we known it". I get that, but I still don't understand why you would forcefully need it to be a variable still then if you know the value is gonna be constant, of course besides global visibility or in iterations because constants are expensive in PHP when "define[]" is a function call and "const" is very limited for no good reason "no good reason" because if it really would be compile time the following won't work and so why can't you use 'const' within a if-statement when you in fact can CONCAT two with `define[]` set constant which are part of a if-statement themself ____________________________________________________ if[PHP_SAPI !== 'cli'] { define['MY_PHP_SELF', $_SERVER['SCRIPT_NAME']]; define['rh_serverurl', PROTOCOL_PREFIX . MY_SERVER_NAME . $rh_port]; } else { define['MY_PHP_SELF', '/' . basename[$_SERVER['SCRIPT_NAME']]]; define['rh_serverurl', '//localhost']; } const rh_phpself = rh_serverurl . MY_PHP_SELF;
nếu những đị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ôngBở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 "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ínhNó 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/