运行时类的PHP中的新动态实例

时间:2016-09-24 08:37:30

标签: php object dynamic

我有不同的类,我有不同的属性。现在我想在运行时实例化这些类。请查看我的示例。 谢谢你的帮助。

   class costumers
{
     $ Name;
...
}

class users
{
   $ Username;
...
}


class db_helper{
...
public function select (object $table, $columns, $limit, $offset) {
     // Instance the object like
      $out = new typeof ($table);
}

}

3 个答案:

答案 0 :(得分:1)

我认为你要做的是创建一个与$table对象相同的类的新实例?然后使用get_class()函数很简单:

class db_helper{
    ...
    public function select (object $table, $columns, $limit, $offset) {
        // Instance the object like
        $class = get_class($table);
        $anotherTable = new $class();
        // ...
    }
}

答案 1 :(得分:0)

也许你可能想看看这个评论过的代码。它可能会给你一些提示......

<?php

    class costumers {
        protected $Name;
        //...
    }

    class users {
        protected $Username;
        //...
    }


    class db_helper {
        //...
        // NOTICE THAT THERE IS NO TYPE-HINT HERE...
        // BAD PRACTICE! BUT THIS IS TO DEMONSTRATE 
        // THE POSSIBILITIES AVAILABLE TO YOU IN THIS CASE...
        public function select($table, $columns, $limit, $offset) {
            // INITIALIZE $out TO NULL TILL YOU KNOW MORE...
            $out    = null;
            if(is_object($table)){
                // IF $table IS AN OBJECT....
                // JUST START USING IT WITHOUT INSTANTIATION:
                $out = $table;
            }else{
                if(class_exists($table)){
                    // Instance the object like
                    $out = new $table;

                }
            }
        }
        // START USING THE OBJECT: $out
    }

答案 2 :(得分:0)

$className = get_class($table);
$out = new $className();

如果你想做更多的事情,请阅读有关反思的内容。