PHP: How to instantiate a class with arguments from within another class

后端 未结 6 540
死守一世寂寞
死守一世寂寞 2021-02-07 13:48

I am in a situations where i need to instantiate a class with arguments from within an instance of another class. Here is the prototype:

//test.php

class test
{         


        
6条回答
  •  有刺的猬
    2021-02-07 14:21

    You can:

    1) Modify test class to accept an array, which contains the data you wish to pass.

    //test.php
    
    class test
    {
            function __construct($a)
            {
                    echo $a[0] . '
    '; echo $a[1] . '
    '; echo $a[2] . '
    '; } }

    2) initiate using a user method instead of the constructor and call it using the call_user_func_array() function.

    //test.php
    
    class test
    {
            function __construct()
            {
    
            }
    
            public function init($a, $b, $c){
                    echo $a . '
    '; echo $b . '
    '; echo $c . '
    '; } }

    In your main class:

    class myclass
    {
    function cls($file_name, $args = array())
    {
            include $file_name . ".php";
    
            if (isset($args))
            {
                    // this is where the problem might be, i need to pass as many arguments as test class has.
                    $class_instance = new $file_name($args);
                    call_user_func_array(array($class_instance,'init'), $args);
            }
            else
            {
                    $class_instance = new $file_name();
            }
    
            return $class_instance;
    }
    }
    

    http://www.php.net/manual/en/function.call-user-func-array.php

    Lastly, you can leave your constructor params blank and use func_get_args().

    //test.php
    
    class test
    {
            function __construct()
            {
                    $a = func_get_args();
                    echo $a[0] . '
    '; echo $a[1] . '
    '; echo $a[2] . '
    '; } }

    http://sg.php.net/manual/en/function.func-get-args.php

提交回复
热议问题