40
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.
Learn more.
Tôi vẫn đang học OOP vì vậy điều này thậm chí có thể không thể thực hiện được [mặc dù tôi sẽ ngạc nhiên nếu vậy], tôi cần một số trợ giúp gọi phương thức lớp khác.
Ví dụ: trong ClassA I
có phương pháp này:
function getName[]
{
return $this->name;
}
Bây giờ từ
//file1.php
//file2.php
0 [tệp khác nhau, nhưng trong cùng một thư mục], tôi muốn gọi ________ 11 //file1.php
//file2.php
2, làm thế nào để tôi làm điều đó? Tôi đã cố gắng chỉ làm một //file1.php
//file2.php
3 nhưng điều đó không hoạt động.Thanks!
Sẽ
23.2K13 Huy hiệu vàng93 Huy hiệu bạc105 Huy hiệu đồng13 gold badges93 silver badges105 bronze badges
Đã hỏi ngày 21 tháng 11 năm 2012 lúc 23:29Nov 21, 2012 at 23:29
4
//file1.php
//file2.php
Đã trả lời ngày 21 tháng 11 năm 2012 lúc 23:33Nov 21, 2012 at 23:33
CodingBizCodingBizcodingbiz
25.8k8 Huy hiệu vàng55 Huy hiệu bạc93 Huy hiệu Đồng8 gold badges55 silver badges93 bronze badges
8
Nếu chúng là các lớp riêng biệt, bạn có thể làm một cái gì đó như sau:
class A
{
private $name;
public function __construct[]
{
$this->name = 'Some Name';
}
public function getName[]
{
return $this->name;
}
}
class B
{
private $a;
public function __construct[A $a]
{
$this->a = $a;
}
function getNameOfA[]
{
return $this->a->getName[];
}
}
$a = new A[];
$b = new B[$a];
$b->getNameOfA[];
Những gì tôi đã làm trong ví dụ này trước tiên là tạo một thể hiện mới của lớp
//file1.php
//file2.php
4. Và sau đó tôi đã tạo ra một thể hiện mới của lớp //file1.php
//file2.php
5 mà tôi chuyển thể hiện //file1.php
//file2.php
4 vào hàm tạo. Bây giờ //file1.php
//file2.php
5 có thể truy cập tất cả các thành viên công cộng của lớp //file1.php
//file2.php
4 bằng cách sử dụng //file1.php
//file2.php
9.Cũng lưu ý rằng tôi không khởi tạo lớp
//file1.php
//file2.php
4 bên trong lớp //file1.php
//file2.php
5 vì điều đó có nghĩa là tôi đã cặp đôi hai lớp. Điều này làm cho nó khó:- Đơn vị kiểm tra lớp
5 của bạn//file1.php //file2.php
- Trao đổi lớp
4 cho một lớp khác//file1.php //file2.php
Đã trả lời ngày 21 tháng 11 năm 2012 lúc 23:36Nov 21, 2012 at 23:36
PeehaapeehaaPeeHaa
70.1K58 Huy hiệu vàng185 Huy hiệu bạc259 Huy hiệu đồng58 gold badges185 silver badges259 bronze badges
3
Bạn sẽ cần phải có một thể hiện của Classa trong ClassB hoặc có lớp kế thừa Classa
class ClassA {
public function getName[] {
echo $this->name;
}
}
class ClassB extends ClassA {
public function getName[] {
parent::getName[];
}
}
Không có kế thừa hoặc phương thức thể hiện, bạn cần classa để có một phương thức tĩnh
class ClassA {
public static function getName[] {
echo "Rawkode";
}
}
--- Tệp khác ---
class A
{
private $name;
public function __construct[]
{
$this->name = 'Some Name';
}
public function getName[]
{
return $this->name;
}
}
class B
{
private $a;
public function __construct[A $a]
{
$this->a = $a;
}
function getNameOfA[]
{
return $this->a->getName[];
}
}
$a = new A[];
$b = new B[$a];
$b->getNameOfA[];
4Nếu bạn chỉ muốn gọi phương thức từ một thể hiện của lớp:
class ClassA {
public function getName[] {
echo "Rawkode";
}
}
--- Tệp khác ---
$a = new ClassA[];
echo $a->getName[];
Nếu bạn chỉ muốn gọi phương thức từ một thể hiện của lớp:
Đã trả lời ngày 21 tháng 11 năm 2012 lúc 23:33Nov 21, 2012 at 23:33
CodingBizCodingBizRawkode
25.8k8 Huy hiệu vàng55 Huy hiệu bạc93 Huy hiệu Đồng5 gold badges38 silver badges45 bronze badges
1
Nếu chúng là các lớp riêng biệt, bạn có thể làm một cái gì đó như sau:
class ClassA {
public $name = 'A';
public function getName[]{
return $this->name;
}
}
Những gì tôi đã làm trong ví dụ này trước tiên là tạo một thể hiện mới của lớp
//file1.php
//file2.php
4. Và sau đó tôi đã tạo ra một thể hiện mới của lớp //file1.php
//file2.php
5 mà tôi chuyển thể hiện //file1.php
//file2.php
4 vào hàm tạo. Bây giờ //file1.php
//file2.php
5 có thể truy cập tất cả các thành viên công cộng của lớp //file1.php
//file2.php
4 bằng cách sử dụng //file1.php
//file2.php
9.include["file1.php"];
class ClassB {
public $name = 'B';
public function getName[]{
return $this->name;
}
public function callA[]{
$a = new ClassA[];
return $a->getName[];
}
public static function callAStatic[]{
$a = new ClassA[];
return $a->getName[];
}
}
$b = new ClassB[];
echo $b->callA[];
echo $b->getName[];
echo ClassB::callAStatic[];
Cũng lưu ý rằng tôi không khởi tạo lớp
//file1.php
//file2.php
4 bên trong lớp //file1.php
//file2.php
5 vì điều đó có nghĩa là tôi đã cặp đôi hai lớp. Điều này làm cho nó khó:Nov 21, 2012 at 23:42
1