Hướng dẫn can a static method call a non static method in php? - một phương thức tĩnh có thể gọi một phương thức không tĩnh trong php không?
Tôi đang làm việc trên mã PHP. Show Đây là mã mẫu để giải thích vấn đề của tôi:
Làm thế nào tôi có thể gọi phương thức phi tĩnh từ phương thức tĩnh?
Đã hỏi ngày 13 tháng 1 năm 2017 lúc 9:46Jan 13, 2017 at 9:46
RahulrahulRahul 17,9K7 Huy hiệu vàng40 Huy hiệu bạc58 Huy hiệu đồng7 gold badges40 silver badges58 bronze badges 6 Bạn phải tạo một đối tượng mới bên trong phương thức tĩnh để truy cập các phương thức không tĩnh bên trong lớp đó:
Kết quả sẽ là Chỉnh sửa sau: Như đã thấy sự quan tâm trong việc chuyển các biến cho hàm tạo, tôi sẽ đăng một phiên bản cập nhật của lớp:
Kết quả sẽ là Đã trả lời ngày 13 tháng 1 năm 2017 lúc 9:51Jan 13, 2017 at 9:51
Mihai Mateimihai MateiMihai Matei 23.9K5 Huy hiệu vàng33 Huy hiệu bạc 50 Huy hiệu Đồng5 gold badges33 silver badges50 bronze badges 3 Sự khác biệt chính là bạn có thể gọi các phương thức tĩnh cho một lớp mà không phải khởi tạo một đối tượng của lớp đó. Vì vậy, trong phương pháp tĩnh của bạn, hãy thử
Nhưng tôi không thấy làm thế nào điều này sẽ có ý nghĩa trong bất kỳ bối cảnh nào. Đã trả lời ngày 13 tháng 1 năm 2017 lúc 9:56Jan 13, 2017 at 9:56
1 Mẹo Trang này mô tả việc sử dụng từ khóa Khai báo các thuộc tính hoặc phương thức lớp là tĩnh giúp chúng có thể truy cập mà không cần khởi tạo lớp. Chúng cũng có thể được truy cập thống kê trong một đối tượng lớp khởi tạo. Phương pháp tĩnhBởi vì các phương thức tĩnh có thể gọi được mà không có một thể hiện của đối tượng được tạo ra, nên việc biến giả $ này không có sẵn bên trong các phương thức được khai báo là tĩnh. Cảnh báo Gọi các phương thức phi tĩnh là ném một lỗi.Error. Trước PHP 8.0.0, việc gọi các phương thức phi tĩnh được tính không thể dùng được và tạo ra cảnh báo ____10. Ví dụ #1 Phương pháp tĩnh ví dụ 1
Tính chất tĩnhCác thuộc tính tĩnh được truy cập bằng toán tử phân giải phạm vi ( 2) và không thể được truy cập thông qua toán tử đối tượng ( 3).Có thể tham chiếu lớp bằng một biến. Giá trị của biến không thể là một từ khóa (ví dụ: 4, 5 và static ).Ví dụ #2 ví dụ thuộc tính tĩnh 7 8 9Đầu ra của ví dụ trên trong Php 8 tương tự như: foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo Inkredredibl ¶ ¶ 14 năm trước 0payal001 tại gmail dot com ¶ 11 năm trước 1 2 3 4artekpuck tại gmail dot com ¶ 4 năm trước 5Quản trị viên tại Shopinson Dot Com ¶ ¶ 2 năm trước 6 7 8 9Ẩn danh ¶ ¶ 17 năm trước 0 1 2 3 4 5 6 7Ẩn danh ¶ ¶ 17 năm trước 8 9 78 năm trước ¶ 4 năm trước foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo1 foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo2 foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo3 foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo4 8foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo6 Quản trị viên tại Shopinson Dot Com ¶ ¶ 2 năm trước foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo7 foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo8 foo foo Notice: Accessing static property Foo::$my_static as non static in /in/V0Rvv on line 23 Warning: Undefined property: Foo::$my_static in /in/V0Rvv on line 23 foo foo foo foo9 7Ẩn danh ¶ ¶ 17 năm trước
78 năm trước ¶ Aschmidt tại Anamera Dot Net
non-static 8Rahul dot anand77 tại gmail dot com ¶ ¶ 11 năm trước
foo - bar 2artekpuck tại gmail dot com ¶ 4 năm trước
foo - bar 6Quản trị viên tại Shopinson Dot Com ¶ ¶ 17 năm trước
78 năm trước ¶ 14 năm trước
7payal001 tại gmail dot com ¶ 2 năm trước
8static 8Ẩn danh ¶ ¶ Aschmidt tại Anamera Dot Net
static 2Rahul dot anand77 tại gmail dot com ¶ ¶ 11 năm trước
static 5artekpuck tại gmail dot com ¶ 17 năm trước
8static 98 năm trước ¶ 4 năm trước 00 01
03Quản trị viên tại Shopinson Dot Com ¶ ¶ 4 năm trước 04 05 06 07 8 09Quản trị viên tại Shopinson Dot Com ¶ ¶ 4 năm trước 10 11 12 13Quản trị viên tại Shopinson Dot Com ¶ ¶ 17 năm trước 14 15 16 178 năm trước ¶ 17 năm trước 18 19 8 218 năm trước ¶ 14 năm trước 22payal001 tại gmail dot com ¶ 14 năm trước 23 12 25payal001 tại gmail dot com ¶ 2 năm trước 26 27 7Hàm tĩnh có thể gọi hàm không tĩnh PHP không?Trong Php 5, gọi các phương thức phi tĩnh sẽ tạo ra một cảnh báo E_strict. Trong Php 7, việc gọi các phương thức phi tĩnh một cách độc đáo được không dùng nữa và sẽ tạo ra cảnh báo e_deprecated. Xem Phương thức tĩnh (PHP.NET) để biết chi tiết. Trong ví dụ sau, phương thức foo () được gọi là động trong khi thực sự nó là tĩnh.. In PHP 7, calling non-static methods statically is deprecated, and will generate an E_DEPRECATED warning. See Static methods (php.net) for details. In the following example, the method foo() is called as dynamic while actually it is static.
Phương pháp tĩnh có thể gọi phương thức không tĩnh?Một phương thức tĩnh chỉ có thể gọi các phương thức tĩnh khác;Nó không thể gọi một phương thức phi tĩnh.Một phương thức tĩnh có thể được gọi trực tiếp từ lớp, mà không phải tạo một thể hiện của lớp.Một phương pháp tĩnh chỉ có thể truy cập các biến tĩnh;Nó không thể truy cập các biến thể hiện.it cannot call a non-static method. A static method can be called directly from the class, without having to create an instance of the class. A static method can only access static variables; it cannot access instance variables.
Có thể truy cập chức năng tĩnh có thể truy cập các biến không tĩnh trong PHP không?Phương thức tĩnh sẽ không có quyền truy cập vào $ này (vì không có $ điều này để nói trong bối cảnh tĩnh).Nếu bạn cần một tham chiếu đến đối tượng hiện tại trong phương thức tĩnh, nó không phải là phương thức tĩnh. A static method will not have access to $this (as there is no $this to talk about in a static context). If you need a reference to the current object within the static method, it is not a static method.
Tại sao nó là bất hợp pháp đối với phương pháp tĩnh để gọi một phương pháp không tĩnh?Phương pháp phi tĩnh là một phương pháp thực thi trong bối cảnh của một thể hiện.Không có một ví dụ, không có ý nghĩa gì khi gọi một, vì vậy trình biên dịch ngăn bạn làm như vậy - tức là nó là bất hợp pháp.Without an instance it makes no sense to call one, so the compiler prevents you from doing so - ie it's illegal. |