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