Hướng dẫn can i call non static method from static method php? - tôi có thể gọi phương thức không tĩnh từ php phương thức tĩnh không?
58 Show
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Tôi đang làm việc trên mã PHP. Đâ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 Huy hiệu vàng 18K740 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à 3Chỉ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à 4Đã 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
Php 8.0 không còn cho phép gọi các phương thức lớp không tĩnh với toán tử cuộc gọi tĩnh ( 5).Gọi các phương thức không tĩnh đã nêu ra một thông báo không nhận PHP trong tất cả các phiên bản PHP 7 và nêu ra một thông báo tiêu chuẩn nghiêm ngặt trong các phiên bản PHP 5.
Trong PHP 8.0 trở lên, điều này dẫn đến một lỗi nghiêm trọng:
Thay đổi này được thực hiện trong toàn bộ động cơ. Chức năng biến
Đồ gọiPHP không còn coi một mảng có tên lớp và phương thức ( 7) là một cuộc gọi hợp lệ và dẫn đến một lỗi nghiêm trọng. Điều này bao gồm các chức năng cốt lõi của PHP mong đợi một cuộc gọi. Nếu việc gọi đó được chuyển đến một hàm mong đợi một cuộc gọi hợp lệ, một 8 sẽ bị ném thay vì lỗi nghiêm trọng tại thời gian gọi.
Điều này ảnh hưởng đến tất cả các chức năng từ 9 và 0 đến 1, 2, 2.
class Foo {
private $foo;
private $bar;
public function __construct($foo, $bar)
{
$this->foo = $foo;
$this->bar = $bar;
}
public function fun1()
{
return $this->foo . ' - ' . $this->bar;
}
public static function fun2($foo, $bar)
{
return (new self($foo, $bar))->fun1();
}
}
echo Foo::fun2('foo', 'bar');
|