반응형
PHP는 클래스 이름에서 개체를 문자열로 인스턴스화할 수 있습니까?
클래스 이름이 문자열에 저장되어 있는 경우 클래스 이름에서 개체를 인스턴스화하는 것이 PHP에서 가능한가요?
네, 물론입니다.
$className = 'MyClass';
$object = new $className;
<?php
$type = 'cc';
$obj = new $type; // outputs "hi!"
class cc {
function __construct() {
echo 'hi!';
}
}
?>
클래스에 인수가 필요한 경우 다음을 수행해야 합니다.
class Foo
{
public function __construct($bar)
{
echo $bar;
}
}
$name = 'Foo';
$args = 'bar';
$ref = new ReflectionClass($name);
$obj = $ref->newInstanceArgs(array($args));
스태틱도:
$class = 'foo';
return $class::getId();
데이터베이스와 같은 저장소에 클래스 이름 / 메서드를 저장하여 동적 호출을 수행할 수 있습니다.클래스가 오류에 대해 복원력이 있다고 가정합니다.
sample table my_table
classNameCol | methodNameCol | dynamic_sql
class1 | method1 | 'select * tablex where .... '
class1 | method2 | 'select * complex_query where .... '
class2 | method1 | empty use default implementation
etc. 그런 다음 클래스와 메서드 이름에 대해 데이터베이스에서 반환된 문자열을 사용하여 코드에서 입력합니다.클래스에 대한 SQL 쿼리를 저장할 수도 있습니다.상상에 따라 자동화 수준도 지정할 수 있습니다.
$myRecordSet = $wpdb->get_results('select * from my my_table')
if ($myRecordSet) {
foreach ($myRecordSet as $currentRecord) {
$obj = new $currentRecord->classNameCol;
$obj->sql_txt = $currentRecord->dynamic_sql;
$obj->{currentRecord->methodNameCol}();
}
}
이 방법을 사용하여 REST 웹 서비스를 만듭니다.
언급URL : https://stackoverflow.com/questions/1377052/can-php-instantiate-an-object-from-the-name-of-the-class-as-a-string
반응형
'source' 카테고리의 다른 글
MySQL 및 PHP - 빈 문자열 대신 NULL을 삽입합니다. (0) | 2022.09.29 |
---|---|
Python을 사용한 디렉토리 반복 (0) | 2022.09.28 |
int를 부호 없는 바이트로 변환하고 되돌리는 방법 (0) | 2022.09.28 |
기본 키가 자동으로 증가하는 MySQL에 데이터를 삽입하려면 어떻게 해야 합니까? (0) | 2022.09.28 |
JavaScript 문자열에서 여러 공백을 단일 공백으로 바꿉니다. (0) | 2022.09.28 |