Trong bài viết này, chúng tôi chỉ ra cách gọi một phương thức trong một lớp trên một đối tượng.
Giả sử bạn đã tạo một lớp có một phương thức hoặc phương thức trong đó cũng như các đối tượng trong đó.
Làm thế nào bạn có thể gọi các phương pháp đó trên các đối tượng đó?
Chúng tôi sẽ chỉ ra bên dưới cách gọi các phương thức trên các đối tượng trong PHP.
Là các phương pháp thường bao gồm các lớp và đối tượng được điều chỉnh để chạy các phương thức, điều này rất cần thiết để biết.
Giả sử bên dưới chúng ta có lớp động vật và chúng ta có một phương thức đi bộ []. Điều này mô phỏng rằng một con vật đi bộ.
Để gọi một phương pháp như thế này trong PHP, định dạng chung để làm như vậy được hiển thị bên dưới.
Vì vậy, trong mã trên, chúng tôi đã tạo ra một hàm gọi là Walk [] vang vọng, "Tôi là một con vật và tôi đi bộ".
Sau đó, chúng tôi tạo một ví dụ [hoặc đối tượng] của lớp động vật, $ rùa.
Chúng tôi gọi phương thức Walk [] trên đối tượng này hoặc bạn có thể nói rằng đối tượng gọi phương thức này.
Dù bằng cách nào, đối tượng $ rùa thực hiện phương thức Walk [].
Để gọi một phương thức trên một đối tượng, bạn chỉ cần gọi tên đối tượng theo sau là "->" và sau đó gọi phương thức. Vì đó là một tuyên bố, bạn đóng nó bằng một dấu chấm phẩy.
Khi bạn đang xử lý các đối tượng trong PHP, "->" hầu như luôn được sử dụng để truy cập đối tượng đó, cho dù đó là thuộc tính hay gọi phương thức. Đó là cách xử lý các đối tượng trong PHP.
Hãy nhớ rằng khi bạn gọi phương thức, phương thức phải có "[]" với nó. Nó sẽ không hoạt động mà không có dấu ngoặc đơn.
Chúng tôi hiển thị mã PHP đầy đủ về cách gọi một phương thức trên một đối tượng.
Vì vậy, trong mã trên, chúng tôi đã tạo ra một lớp có tên là động vật. Để tạo một lớp trong PHP, tất cả những gì bạn phải làm là sử dụng lớp từ khóa theo sau tên của lớp.
Sau đó, chúng tôi tạo ra chức năng Walk [] vang vọng, "Tôi là một con vật và tôi đi bộ".
Sau đó chúng tôi tạo ra một ví dụ của lớp động vật, $ rùa.
Sau đó, chúng tôi gọi phương thức đi bộ này [] trên đối tượng $ rùa bằng cách sử dụng "->" ở giữa đối tượng và phương thức.
Vì vậy, khá đơn giản để gọi các phương thức trên các đối tượng trong PHP.
Tất nhiên, một số phương thức lấy tham số nếu bạn đã tạo nó cho phương thức của mình. Nhưng nó hoạt động trong cùng một phương pháp. Nếu một phương thức lấy các tham số, nó được gọi theo cùng một cách, chỉ với [các] tham số bao gồm.
Quay trở lại mã PHP ở trên, nếu nó chạy, điều này cung cấp đầu ra sau đây được hiển thị bên dưới.
Đầu ra PHP thực tế
Tôi là một con vật và tôi đi bộ.
Tôi có chức năng được bảo vệ tạo ra một đối tượng lớp
protected function x[] {
$obj = new classx[];
}
Bây giờ tôi cần truy cập các phương thức của đối tượng lớp từ các chức năng khác nhau [tôi không muốn khởi tạo lại].
protected function y[] {
$objmethod = $obj->methodx[];
}
Làm thế nào tôi có thể hoàn thành nó?
Oh cả hai hàm đều tồn tại trong cùng một lớp nói 'lớp z {}'
Thông báo lỗi là
Fatal error: Call to a member function get_verification[] on a non-object in
Daniel Li
14.6K6 Huy hiệu vàng42 Huy hiệu bạc59 Huy hiệu Đồng6 gold badges42 silver badges59 bronze badges
hỏi ngày 16 tháng 7 năm 2012 lúc 17:54Jul 16, 2012 at 17:54
Abhishek Salianabhishek SalianAbhishek Salian
9102 Huy hiệu vàng10 Huy hiệu bạc27 Huy hiệu đồng2 gold badges10 silver badges27 bronze badges
Lưu trữ $obj
, ví dụ của classx
trong một tài sản của ClassZ
, có thể là một tài sản private
. Khởi tạo nó trong trình xây dựng ClassZ
hoặc phương thức khởi tạo khác và truy cập nó qua $this->obj
.
class ClassZ {
// Private property will hold the object
private $obj;
// Build the classx instance in the constructor
public function __construct[] {
$this->obj = new ClassX[];
}
// Access via $this->obj in other methods
// Assumes already instantiated in the constructor
protected function y[] {
$objmethod = $this->obj->methodx[];
}
// If you don't want it instantiated in the constructor....
// You can instantiate it in a different method than the constructor
// if you otherwise ensure that that method is called before the one that uses it:
protected function x[] {
// Instantiate
$this->obj = new ClassX[];
}
// So if you instantiated it in $this->x[], other methods should check if it
// has been instantiated
protected function yy[] {
if [!$this->obj instanceof classx] {
// Call $this->x[] to build $this->obj if not already done...
$this->x[];
}
$objmethod = $this->obj->methodx[];
}
}
Đã trả lời ngày 16 tháng 7 năm 2012 lúc 17:58Jul 16, 2012 at 17:58
Michael Berkowskimichael BerkowskiMichael Berkowski
264K46 Huy hiệu vàng437 Huy hiệu bạc382 Huy hiệu Đồng46 gold badges437 silver badges382 bronze badges
0