나는 꽤 오랫동안 액티브 레코드를 사용 해왔다. 풍경을 약간 변경하고 싶었다. 일부 개발자는 ORM을 살펴 보라고 제안했다. 내가 본 ORM 프로젝트는 모두 ORM을 확장하는 별도의 클래스가 필요하다. 수업.클래스를 동적으로 생성하기
제 질문은 : 없이eval
없이 PHP를 사용하여 클래스를 동적으로 생성하는 방법이 있습니까? 내 클라이언트는 eval
인해 그를 공유 호스팅에있는 자신의 환경에서 차단되는 것을 나에게 알려,
<?php
class Constructor
{
function new_class($class)
{
$myself = get_called_class();
eval("class {$class} extends {$myself} { }");
}
function say_hi()
{
$class = get_called_class();
echo "Hi, {$class}!";
}
}
$constructor = new Constructor;
$constructor->new_class("Greeter");
$greeter = new Greeter;
$greeter->say_hi(); // Hi, Greeter!
그러나 :
이 내가 가진 것입니다.
하지만 왜? 클래스를 생성하고, 배열에 매개 변수를 넣고,'__set'과'__get' 메소드를 추가합니다. 배열에 매개 변수를 설정하면'$ name' 매개 변수를 추가 할 수 있습니다.이 매개 변수는'setName ($ name)'을 설정하고 getName()을 해보려고 클래스의 이름이 될 것이다. 클래스의 후계자. – mkjasinski
PHP에서 이렇게하는 "아름다운"방법은 없습니다. eval()을 사용하거나 런타임에 클래스 정의로 파일을 만든 다음 include()합니다 ... 그러나 프로그램 디자인을 변경하는 것을 고려하십시오. http://stackoverflow.com/questions/3490474/how-to-create-or-define-class-in-php-at-runtime을 참조하십시오. –