Tôi có một lớp học như:
class bla_bla extends WP_Widget {
function boo[]{
return 'something';
}
...
}
[Đó là một tiện ích WordPress]
Làm thế nào tôi có thể truy cập chức năng boo[]
từ bên ngoài lớp? Tôi muốn gán giá trị được trả về bởi hàm đó cho một biến, như $var = boo[];
hỏi ngày 18 tháng 11 năm 2010 lúc 15:13Nov 18, 2010 at 15:13
1
Bạn có thể truy cập trực tiếp hoặc bằng cách khởi tạo lớp:
$blah = new bla_bla[];
$var = $blah->boo[];
hoặc
$var = bla_bla::boo[];
Đã trả lời ngày 18 tháng 11 năm 2010 lúc 15:17Nov 18, 2010 at 15:17
RdlrdlRDL
7.7973 Huy hiệu vàng28 Huy hiệu bạc32 Huy hiệu đồng3 gold badges28 silver badges32 bronze badges
0
Bạn phải có một thể hiện của lớp đó để gọi nó, ví dụ:
$widget = new bla_bla[];
$var = $widget->boo[];
Mặt khác, bạn có thể thêm từ khóa "tĩnh" vào hàm boo [] và bạn có thể gọi nó như $var = WP_Widget::boo[];
nhưng điều này thay đổi ngữ nghĩa và có thể phá vỡ mã.
Đã trả lời ngày 18 tháng 11 năm 2010 lúc 15:16Nov 18, 2010 at 15:16
PalantirpalantirPalantir
23.4K9 Huy hiệu vàng75 Huy hiệu bạc85 Huy hiệu Đồng9 gold badges75 silver badges85 bronze badges
0
Đầu tiên bạn cần một ví dụ của lớp. Sau đó, bạn gọi phương thức [nếu nó là công khai]. Bạn nên đọc một số hướng dẫn OOP vì đây là những thứ thực sự cơ bản. Xem PHP định hướng đối tượng cho người mới bắt đầu.
$bla = new bla_bla[];
$var = $bla->boo[];
Đã trả lời ngày 18 tháng 11 năm 2010 lúc 15:16Nov 18, 2010 at 15:16
PalantirpalantirAlexV
23.4K9 Huy hiệu vàng75 Huy hiệu bạc85 Huy hiệu Đồng16 gold badges86 silver badges119 bronze badges
Đầu tiên bạn cần một ví dụ của lớp. Sau đó, bạn gọi phương thức [nếu nó là công khai]. Bạn nên đọc một số hướng dẫn OOP vì đây là những thứ thực sự cơ bản. Xem PHP định hướng đối tượng cho người mới bắt đầu.
$bla = [new bla_bla]->boo[];
AlexvalexvJul 9, 2020 at 6:57
$bla = new bla_bla[];
$var = $bla->boo[];
22.2K16 Huy hiệu vàng86 Huy hiệu bạc119 Huy hiệu đồngNov 18, 2010 at 15:15
Phong cách viết ngắn:enobrev
Đã trả lời ngày 9 tháng 7 năm 2020 lúc 6:577 gold badges43 silver badges53 bronze badges
1
Đã trả lời ngày 18 tháng 11 năm 2010 lúc 15:15
EnobrevenobrevJun 2 at 22:12
1
PHP - Bộ điều chỉnh truy cập
Các thuộc tính và phương thức có thể có các sửa đổi truy cập kiểm soát nơi chúng có thể được truy cập.
Có ba công cụ sửa đổi truy cập:
-
0 - Thuộc tính hoặc phương thức có thể được truy cập từ mọi nơi. Đây là mặc định$blah = new bla_bla[]; $var = $blah->boo[];
-
1 - thuộc tính hoặc phương thức có thể được truy cập trong lớp và bởi các lớp có nguồn gốc từ lớp đó$blah = new bla_bla[]; $var = $blah->boo[];
-
2 - thuộc tính hoặc phương thức chỉ có thể được truy cập trong lớp$blah = new bla_bla[]; $var = $blah->boo[];
Trong ví dụ sau, chúng tôi đã thêm ba công cụ sửa đổi truy cập khác nhau vào ba thuộc tính [tên, màu sắc và trọng lượng]. Ở đây, nếu bạn cố gắng đặt thuộc tính tên, nó sẽ hoạt động tốt [vì thuộc tính tên là công khai và có thể được truy cập từ mọi nơi]. Tuy nhiên, & nbsp; nếu bạn cố gắng đặt thuộc tính màu hoặc trọng lượng, nó sẽ dẫn đến một lỗi nghiêm trọng [vì tính chất màu và trọng lượng được bảo vệ và riêng tư]:
Thí dụ
$blah = new bla_bla[];
$var = $blah->boo[];
2 - thuộc tính hoặc phương thức chỉ có thể được truy cập trong lớpclass Fruit {
public $name;
protected $color;
private $weight;
}
$ xoài = fruit new []; $ xoài-> name = 'xoài'; // OK $ Mango-> color = 'màu vàng'; // lỗi $ Mango-> trọng lượng = '300'; // lỗi?>
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>
Trong ví dụ tiếp theo, chúng tôi đã thêm các sửa đổi truy cập vào hai chức năng. Ở đây, nếu bạn cố gắng gọi hàm set_color [] hoặc hàm set_weight [], nó sẽ dẫn đến một lỗi nghiêm trọng [vì hai hàm được coi là được bảo vệ và riêng tư], ngay cả khi tất cả các thuộc tính đều được công khai:
Thí dụ
$blah = new bla_bla[];
$var = $blah->boo[];
2 - thuộc tính hoặc phương thức chỉ có thể được truy cập trong lớpclass Fruit {
public $name;
public $color;
public $weight;
$ xoài = fruit new []; $ xoài-> name = 'xoài'; // OK $ Mango-> color = 'màu vàng'; // lỗi $ Mango-> trọng lượng = '300'; // lỗi?>
$this->name = $n;
}
protected function set_color[$n] { // a protected function
$this->color = $n;
}
private function set_weight[$n] { // a private function
$this->weight = $n;
}
}
Trong ví dụ tiếp theo, chúng tôi đã thêm các sửa đổi truy cập vào hai chức năng. Ở đây, nếu bạn cố gắng gọi hàm set_color [] hoặc hàm set_weight [], nó sẽ dẫn đến một lỗi nghiêm trọng [vì hai hàm được coi là được bảo vệ và riêng tư], ngay cả khi tất cả các thuộc tính đều được công khai:
$mango->set_name['Mango']; // OK
$mango->set_color['Yellow']; // ERROR
$mango->set_weight['300']; // ERROR
?>