使用php调用方法和对象

时间:2014-09-13 15:18:20

标签: php oop callback

我有这段代码:

   <?PHP
 function call_and_set( $obj, $txt){
                         return call_user_method('example', $obj, $txt);
                    }

        class test{

                function example($text){
                        echo $text;
                    }

            }
            $test = new test();
       call_and_set($test, "Hello World!");
    ?> 

在我的代码中,我并不总是想使用

$ test = new test ....

我想直接使用该名称而不是$test。例如:

call_and_set("test", "Hellow World!").

2 个答案:

答案 0 :(得分:1)

我想我明白你想要完成什么,但有点不清楚。您可以将要实例化的类的名称指定为变量名称:

<?php

class test {}

$test = 'test';

$testObj = new $test;

在尝试实例化之前验证类是否存在可能是个好主意,但是:

if(class_exists($test)) {
    $testObj = new $test;
}

答案 1 :(得分:1)

我不知道为什么他们会投票给你。我认为这个问题并不是那么糟糕。

您应该使用工厂方法模式或类似的东西。使用工厂方法,您可以基于字符串创建类。在PHP中,它并不难。尝试这样的事情:

<?PHP

    function call_and_set( $className, $txt) {
         $obj = ProductFactory::create($className);
         return call_user_method('example', $obj, $txt);
    }

    class test
    {

        function example($text){
            echo $text;
        }

    }

    class ProductFactory
    {
        public static function create($className) {
            //Add some checks and/or include class files
            return new $className();
        } 
    }           

    call_and_set("test", "Hello World!");
?>