Tôi có hai lớp,
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
3 và $str = 'One';
$class = 'Class'.$str;
$object = new $class[];
4. Tôi đang nhận được một chuỗi có thể là $str = 'One';
$class = 'Class'.$str;
$object = new $class[];
5 hoặc $str = 'One';
$class = 'Class'.$str;
$object = new $class[];
6.Thay vì sử dụng câu lệnh
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
7 dài như:switch [$str] {
case "One":
return new ClassOne[];
case "Two":
return new ClassTwo[];
}
Có cách nào tôi có thể tạo một thể hiện bằng một chuỗi, tức là
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
8 không?
Antti29
2.91512 Huy hiệu vàng36 Huy hiệu bạc36 Huy hiệu đồng12 gold badges36 silver badges36 bronze badges
hỏi ngày 2 tháng 1 năm 2011 lúc 12:21Jan 2, 2011 at 12:21
Vâng, bạn có thể!
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
Khi sử dụng không gian tên, hãy cung cấp tên đủ điều kiện:
$class = '\Foo\Bar\MyClass';
$instance = new $class[];
Những thứ thú vị khác bạn có thể làm trong PHP là: Biến biến:
Variable
variables:
$personCount = 123;
$varname = 'personCount';
echo $$varname; // echo's 123
Và các chức năng & phương pháp biến.
$func = 'my_function';
$func['param1']; // calls my_function['param1'];
$method = 'doStuff';
$object = new MyClass[];
$object->$method[]; // calls the MyClass->doStuff[] method.
Đã trả lời ngày 2 tháng 1 năm 2011 lúc 12:23Jan 2, 2011 at 12:23
Bob Fangerbob FangerBob Fanger
Phim thương hiệu vàng 27,6K77 gold badges61 silver badges78 bronze badges
12
Bạn có thể chỉ cần sử dụng cú pháp sau để tạo một lớp mới [đây là tiện dụng nếu bạn đang tạo một nhà máy]:
$className = $whatever;
$object = new $className;
Là một phương pháp nhà máy [đặc biệt thô], phương pháp nhà máy:
public function &factory[$className] {
require_once[$className . '.php'];
if[class_exists[$className]] return new $className;
die['Cannot create new "' . $className . '" class - includes not found or class unavailable.'];
}
Đã trả lời ngày 2 tháng 1 năm 2011 lúc 12:24Jan 2, 2011 at 12:24
John Parkerjohn ParkerJohn Parker
53.7K11 Huy hiệu vàng128 Huy hiệu bạc128 Huy hiệu đồng11 gold badges128 silver badges128 bronze badges
1
Hãy nói
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
9 được định nghĩa là:public class ClassOne
{
protected $arg1;
protected $arg2;
//Contructor
public function __construct[$arg1, $arg2]
{
$this->arg1 = $arg1;
$this->arg2 = $arg2;
}
public function echoArgOne
{
echo $this->arg1;
}
}
Sử dụng phản xạ PHP;
$str = "One";
$className = "Class".$str;
$class = new \ReflectionClass[$className];
Tạo một thể hiện mới:
$instance = $class->newInstanceArgs[["Banana", "Apple"]]];
Gọi một phương thức:
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
0Sử dụng một biến làm phương thức:
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
1Sử dụng phản xạ thay vì chỉ sử dụng chuỗi thô để tạo một đối tượng giúp bạn kiểm soát tốt hơn đối tượng và khả năng kiểm tra dễ dàng hơn [PHPUNIT phụ thuộc rất nhiều vào phản xạ]
Đã trả lời ngày 22 tháng 3 năm 2018 lúc 8:00Mar 22, 2018 at 8:00
RemaderemadeRemade
3684 Huy hiệu bạc13 Huy hiệu Đồng4 silver badges13 bronze badges
0
$str = 'One';
$class = 'Class'.$str;
$object = new $class[];
2Đã trả lời ngày 14 tháng 9 lúc 23:19Sep 14 at 23:19