php Downloads Documentation Get Involved HelpNortheastPHP Conference C dịch - php Downloads Documentation Get Involved HelpNortheastPHP Conference C Việt làm thế nào để nói

php Downloads Documentation Get Inv


php

Downloads
Documentation
Get Involved
Help

NortheastPHP Conference CfP Opens
Class Abstraction »
« Scope Resolution Operator (::)

PHP Manual Language Reference Classes and Objects

Change language:
Edit Report a Bug
Static Keyword ¶
Tip

This page describes the use of the static keyword to define static methods and properties. static can also be used to define static variables and for late static bindings. Please refer to those pages for information on those meanings of static.

Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static cannot be accessed with an instantiated class object (though a static method can).

For compatibility with PHP 4, if no visibility declaration is used, then the property or method will be treated as if it was declared as public.
Static methods ¶

Because static methods are callable without an instance of the object created, the pseudo-variable $this is not available inside the method declared as static.
Caution

In PHP 5, calling non-static methods statically generates an E_STRICT level warning.
Warning

In PHP 7, calling non-static methods statically is deprecated, and will generate an E_DEPRECATED warning. Support for calling non-static methods statically may be removed in the future.

Example #1 Static method example

Static properties ¶

Static properties cannot be accessed through the object using the arrow operator ->.

Like any other PHP static variable, static properties may only be initialized using a literal or constant before PHP 5.6; expressions are not allowed. In PHP 5.6 and later, the same rules apply as const expressions: some limited expressions are possible, provided they can be evaluated at compile time.

As of PHP 5.3.0, it's possible to reference the class using a variable. The variable's value cannot be a keyword (e.g. self, parent and static).

Example #2 Static property example

add a note add a note
User Contributed Notes 44 notes
up
down
70
inkredibl ¶
8 years ago
Note that you should read "Variables/Variable scope" if you are looking for static keyword use for declaring static variables inside functions (or methods). I myself had this gap in my PHP knowledge until recently and had to google to find this out. I think this page should have a "See also" link to static function variables.
http://www.php.net/manual/en/language.variables.scope.php
up
down
20
aidan at php dot net ¶
10 years ago
To check if a function was called statically or not, you'll need to do:



More at (http://blog.phpdoc.info/archives/4-Schizophrenic-Methods.html).

(I'll add this to the manual soon).
up
down
21
payal001 at gmail dot com ¶
4 years ago
Here statically accessed property prefer property of the class for which it is called. Where as self keyword enforces use of current class only. Refer the below example:


up
down
17
webmaster at removethis dot weird-webdesign dot de ¶
5 years ago
On PHP 5.2.x or previous you might run into problems initializing static variables in subclasses due to the lack of late static binding:



This will output:
A::$a = lala; B::$a =

If the init() method looks the same for (almost) all subclasses there should be no need to implement init() in every subclass and by that producing redundant code.

Solution 1:
Turn everything into non-static. BUT: This would produce redundant data on every object of the class.

Solution 2:
Turn static $a on
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
php Tải hàng tuần Tài liệu hướng dẫn Tham gia Trợ giúpHội nghị NortheastPHP CfP mởLớp trừu tượng»«Phạm vi giải quyết nhà điều hành (:) Các lớp học tham khảo hướng dẫn sử dụng ngôn ngữ PHP và các đối tượng Thay đổi ngôn ngữ:Chỉnh sửa thông báo lỗiTừ khóa tĩnh ¶MẹoTrang này mô tả việc sử dụng các từ khóa tĩnh để xác định các thuộc tính và phương pháp tĩnh. tĩnh cũng có thể được sử dụng để xác định biến tĩnh và bindings tĩnh muộn. Xin vui lòng tham khảo các trang thông tin về những ý nghĩa của tĩnh.Khai báo lớp tài sản hoặc phương pháp như tĩnh làm cho họ có thể truy cập mà không cần một instantiation của lớp. Bất động sản tuyên bố như là tĩnh không truy nhập được với một đối tượng lớp instantiated (mặc dù một phương pháp tĩnh có thể).Để tương thích với PHP 4, nếu không có tuyên bố tầm nhìn được sử dụng, sau đó tài sản hoặc phương pháp sẽ được coi như là nếu nó đã được tuyên bố là công cộng.Phương pháp tĩnh ¶Bởi vì phương pháp tĩnh callable mà không có một thể hiện của đối tượng tạo, pseudo-biến $this là không có sẵn bên trong phương thức tuyên bố là tĩnh.Thận trọngTrong PHP 5, kêu gọi phương pháp tĩnh tĩnh tạo ra một cảnh báo mức độ E_STRICT.Cảnh báoTrong PHP 7, kêu gọi phương pháp tĩnh tĩnh bị phản đối, và sẽ tạo ra một cảnh báo E_DEPRECATED. Hỗ trợ gọi điện thoại cho phương pháp tĩnh tĩnh có thể được gỡ bỏ trong tương lai.Ví dụ #1 phương pháp tĩnh ví dụlớp Foo {} khu vực chức năng tĩnh aStaticMethod() {} // ... }}Foo::aStaticMethod();$classname = 'Foo';$classname::aStaticMethod(); Theo PHP 5.3.0?>Tĩnh thuộc tính ¶Tĩnh thuộc tính không thể truy cập thông qua các đối tượng bằng cách sử dụng mũi tên điều khiển ->.Giống như bất kỳ khác PHP tĩnh biến, tĩnh thuộc tính có thể chỉ được khởi tạo bằng cách sử dụng một chữ hay hằng số trước khi PHP 5,6; biểu thức không được phép. Trong PHP 5,6 và sau đó, các quy tắc tương tự áp dụng như const biểu thức: biểu thức giới hạn một số là có thể, miễn là họ có thể được đánh giá tại thời điểm biên dịch.Theo PHP 5.3.0, có thể tham khảo các lớp học bằng cách sử dụng một biến. Giá trị của biến không thể là một từ khóa (ví dụ như mình, phụ huynh và tĩnh).Ví dụ #2 tĩnh bất động sản ví dụlớp Foo{ khu vực tĩnh $my_static = 'foo'; chức năng công cộng staticValue() {} trở lại tự:: $my_static; }}lớp thanh kéo dài Foo{ chức năng công cộng fooStatic() {} trả lại phụ huynh:: $my_static; }}in Foo:: $my_static. "
";$foo = mới Foo();in $foo -> staticValue(). "
";in $foo -> my_static. "
"; Không xác định "Tài sản" my_static in $foo:: $my_static. "
";$classname = 'Foo';in $classname:: $my_static. "
"; Theo PHP 5.3.0in Bar:: $my_static. "
";$bar = mới Bar();in $bar -> fooStatic(). "
";?>Thêm một lưu ý thêm một ghi chúNgười sử dụng đã góp phần ghi chú 44 ghi chúlênxuống70inkredibl ¶8 năm trướcLưu ý rằng bạn nên đọc "Biến/biến phạm vi" nếu bạn đang tìm kiếm từ khoá tĩnh sử dụng cho việc khai báo biến tĩnh bên trong chức năng (hoặc các phương pháp). Bản thân tôi đã có này gap trong kiến thức PHP của tôi cho đến gần đây và đã có tới google để tìm. Tôi nghĩ rằng trang này nên có một liên kết "Xem thêm" vào chức năng tĩnh biến.http://www.php.net/Manual/en/Language.Variables.scope.phplênxuống20Aidan tại php dot net ¶10 năm trướcĐể kiểm tra nếu một hàm được gọi là tĩnh hay không, bạn sẽ cần phải làm:hàm foo () {} $isStatic =! (isset($this) & & get_class($this) == __CLASS__);}?>Thông tin thêm tại (http://blog.phpdoc.info/archives/4-Schizophrenic-Methods.html).(Tôi sẽ thêm này vào sổ tay sớm).lênxuống21payal001 tại gmail dot com ¶4 năm trướcỞ đây, truy cập tĩnh bất động sản thích bất động sản của lớp mà nó được gọi là. Nơi như tự từ khoá thi hành việc sử dụng hiện tại lớp chỉ. Tham khảo các ví dụ dưới đây:lớp a {}tĩnh bảo vệ $test = "lớp một";chức năng công cộng static_test() {}echo tĩnh:: $test; Kết quả lớp becho tự:: $test; Kết quả trên lớp một}}lớp b mở rộng một {}tĩnh bảo vệ $test = "hạng b";}$obj = mới b();$obj -> static_test();?>lênxuống17quản trị trang web tại removethis dot lạ-webdesign dot de ¶5 năm trướcTrên PHP 5.2.x hoặc trước đó bạn có thể chạy vào các vấn đề khi khởi tạo biến tĩnh trong phân lớp do thiếu các ràng buộc tĩnh vào cuối:lớp học một {} bảo vệ $a tĩnh; khu vực chức năng tĩnh init($value) {tự:: $một = $value;} khu vực chức năng tĩnh getA() {trở lại tự:: $a;}}lớp B mở rộng một {} bảo vệ $a tĩnh; xác định lại $a để sử dụng riêng kế thừa phương pháp init khu vực chức năng tĩnh getA() {trở lại tự:: $a;}}B::init('lala');echo ' A:: $a = '. A::getA().'; B::$a = '. B::getA();?>Điều này sẽ đầu ra:A:: $một = lala; B:: $a =Nếu phương pháp init trông giống nhau nhất (hầu như) tất cả các lớp con có nên không cần phải thực hiện init mỗi phân lớp và do đó sản xuất mã dự phòng.Giải pháp 1:Biến mọi thứ thành không tĩnh. NHƯNG: Điều này sẽ tạo ra các dữ liệu dư thừa trên mỗi đối tượng của lớp.Giải pháp 2:Bật tĩnh $a
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!

php Downloads Tài liệu Hãy tham gia trợ giúp NortheastPHP Hội nghị CFP Mở lớp trừu tượng » « Phạm vi Nghị quyết điều hành (: :) Lớp tay Language Reference PHP và các đối tượng Thay đổi ngôn ngữ: Chỉnh sửa Báo cáo một Bug tĩnh từ khóa ¶ Mẹo trang này mô tả việc sử dụng các từ khóa tĩnh để xác định phương pháp tĩnh và tài sản. tĩnh cũng có thể được sử dụng để xác định các biến tĩnh và cho ràng buộc tĩnh muộn. Vui lòng tham khảo các trang thông tin về những ý nghĩa của tĩnh. Khai báo thuộc tính của lớp hoặc các phương pháp như tĩnh làm cho họ truy cập mà không cần một instantiation của lớp. Một tài sản khai báo là tĩnh không thể được truy cập với một đối tượng lớp được thuyết minh (mặc dù một phương pháp tĩnh có thể). Để tương thích với PHP 4, nếu không khai tầm nhìn được sử dụng, sau đó các tài sản hoặc phương pháp sẽ được đối xử như thể nó đã được khai báo là public. phương pháp tĩnh ¶ Bởi vì phương pháp tĩnh có thể được gọi mà không cần một thể hiện của đối tượng được tạo ra, các giả biến $ này không có sẵn bên trong các phương pháp khai báo là tĩnh. Chú ý trong PHP 5, kêu gọi các phương pháp không tĩnh tĩnh tạo ra một cảnh báo mức độ E_STRICT. cảnh báo trong PHP 7, kêu gọi các phương pháp không tĩnh tĩnh được nữa và sẽ tạo ra một cảnh báo E_DEPRECATED. Hỗ trợ cho các phương pháp gọi không tĩnh tĩnh có thể được loại bỏ trong tương lai. Ví dụ # 1 tĩnh phương pháp dụ lớp Foo { public static function aStaticMethod () { // ... } } Foo :: aStaticMethod (); $ className = 'Foo '; $ classname :: aStaticMethod (); // Tính PHP 5.3.0 ?> Thuộc tính tĩnh ¶ tính tĩnh không thể được truy cập thông qua các đối tượng sử dụng toán tử mũi tên ->. Giống như bất kỳ biến tĩnh khác PHP, tính chất tĩnh chỉ có thể được khởi tạo bằng một chữ hoặc liên tục trước khi PHP 5.6; biểu thức không được phép. Trong PHP 5.6 và sau đó, các quy tắc tương tự áp dụng biểu thức như const: một số biểu thức hạn chế là có thể, miễn là chúng có thể được đánh giá ở thời gian biên dịch. Như của PHP 5.3.0, có thể tham khảo các lớp học sử dụng một biến. Giá trị của biến không thể là một từ khóa (ví dụ như tự, phụ huynh và tĩnh). Ví dụ # 2 tĩnh ví dụ tài sản lớp Foo { public static $ my_static = 'foo'; public function staticValue () { return tự :: $ my_static; } } class Bar mở rộng Foo { công chức năng fooStatic () { trở lại parent :: $ my_static; } } in Foo :: $ my_static. " n"; $ foo = new Foo (); in $ foo-> staticValue (). " n"; in $ foo-> my_static. " n"; // Không xác định "tài sản" my_static in $ foo :: $ my_static. " n"; $ className = 'Foo'; print $ classname :: $ my_static. " n"; // Tính PHP 5.3.0 in Bar :: $ my_static. " n"; $ bar = mới Bar (); in $ bar-> fooStatic (). " n"; ?> thêm một lưu ý thêm một ghi chú tài Đóng góp Ghi chú 44 ghi chú lên xuống 70 inkredibl ¶ 8 năm trước đây Lưu ý rằng bạn nên đọc "Biến / phạm vi biến đổi" nếu bạn đang tìm kiếm sử dụng từ khóa tĩnh khai báo biến tĩnh bên trong chức năng (hay phương pháp). Bản thân tôi đã có khoảng cách này trong kiến thức PHP của tôi cho đến khi thời gian gần đây và đã phải google để tìm thấy điều này. Tôi nghĩ trang này cần phải có một liên kết "Xem thêm" để biến hàm tĩnh. Http://www.php.net/manual/en/language.variables.scope.php lên xuống 20 Aidan tại php dot net ¶ 10 năm trước để kiểm tra xem một chức năng được gọi là tĩnh hay không, bạn sẽ cần phải làm: {function foo () ! $ isStatic = (isset ($ này) && get_class ($ này) == __CLASS__); } ?> thêm tại ( http://blog.phpdoc.info/archives/4-Schizophrenic-Methods.html). (tôi sẽ thêm này để hướng dẫn sớm). lên xuống 21 payal001 tại gmail dot com ¶ 4 năm trước đây sở hữu đây tĩnh truy cập thích tài sản của lớp mà nó được gọi. Trong trường hợp như tự từ khóa thực thi chỉ sử dụng các lớp hiện tại. Hãy tham khảo những ví dụ dưới đây: class a { tĩnh bảo vệ $ test = "class một"; công chức năng static_test () { vang tĩnh :: $ thử nghiệm; // Kết quả lớp b vang tự :: $ thử nghiệm; // Kết quả lớp một } } class b kéo dài một { static $ test bảo vệ = "class b"; } $ obj = new b (); $ obj-> static_test (); ?> Lên xuống 17 webmaster tại REMOVETHIS chấm weird- dot webdesign de ¶ 5 năm trước Mở PHP 5.2.x hoặc trước đó bạn có thể chạy vào các vấn đề khởi tạo biến tĩnh trong lớp con do thiếu cuối ràng buộc tĩnh: class A { bảo vệ tĩnh $ a; public static function init ($ value) { tự :: $ a = $ giá trị; } Hàm public static Geta () {return tự :: $ a; } } Class B extends A { bảo vệ tĩnh $ a; // Xác định lại $ một để sử dụng riêng // thừa kế phương thức init () công hàm tĩnh Geta () {return tự :: $ a; } } B :: init ( 'lala'); echo 'A :: $ a =' .A :: Geta (). '; B :: $ a = '.B :: Geta (); ?> Sản lượng này sẽ: A :: $ a = lala; B :: $ a = Nếu phương pháp init () trông giống nhau cho (gần như) tất cả các lớp con không nên có cần thiết phải thực hiện init () trong mỗi phân lớp và do đó mã dư thừa sản xuất. Giải pháp 1: Biến mọi thứ thành không tĩnh . NHƯNG: Điều này sẽ tạo ra dữ liệu dư thừa trên mỗi đối tượng của lớp. Giải pháp 2: Biến tĩnh $ một ngày










































































































































































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: