Php 如何检测用于初始化类的变量

Php 如何检测用于初始化类的变量,php,Php,我有一个简单的自动加载脚本,唯一的问题是我不知道初始化了哪个变量myclass1。我var_转储变量$class,它说 object(class1)[1] 但是当我试图$class->someMethod()变量类是未定义的吗 在我的ClassLib目录中,我有一个 -class1.php和 -class2.php 我的代码: 您仍然必须在函数范围之外定义类实例$class 这意味着您应该在init_classes函数中返回$class。我在这里看到的唯一问题是,您希望能够同时实例化多个类,因

我有一个简单的自动加载脚本,唯一的问题是我不知道初始化了哪个变量my
class1
。我var_转储变量$class,它说

object(class1)[1]

但是当我试图
$class->someMethod()
变量类是未定义的吗

在我的ClassLib目录中,我有一个

-class1.php
-class2.php

我的代码:


您仍然必须在函数范围之外定义类实例$class

这意味着您应该在init_classes函数中返回$class。我在这里看到的唯一问题是,您希望能够同时实例化多个类,因此可能必须返回一个类数组

您可以尝试以下方法:

function init_classes($classes = array()){
    $error = array();
    $instances = array();

    foreach($classes as $class){
        if(verify_fclass($class) === FALSE){
            $error[$class.'NotExisting'] = $class;
        }
        else{
            $test = null;
            $instances[$class] = new $class;
        }
    }
    return array( 'error' => $error, 'instances' => $instances);
}

$class_array = array('NonExistingClass','class1');
$class = $init['instances']['class1'];
$class->what();

但是,您也可以直接实例化类,而不使用数组和init_classes方法…

您仍然需要在函数范围之外定义类实例$class

这意味着您应该在init_classes函数中返回$class。我在这里看到的唯一问题是,您希望能够同时实例化多个类,因此可能必须返回一个类数组

您可以尝试以下方法:

function init_classes($classes = array()){
    $error = array();
    $instances = array();

    foreach($classes as $class){
        if(verify_fclass($class) === FALSE){
            $error[$class.'NotExisting'] = $class;
        }
        else{
            $test = null;
            $instances[$class] = new $class;
        }
    }
    return array( 'error' => $error, 'instances' => $instances);
}

$class_array = array('NonExistingClass','class1');
$class = $init['instances']['class1'];
$class->what();

但是,您也可以直接实例化类,而不使用数组和init_classes方法…

如果您有一个自动加载程序,为什么要再次检查类的存在性?显示您的
init\u load
。如果您有一个自动加载程序,为什么要再次检查类的存在?显示您的
init_加载
.Hmmm不错,谢谢,我使用了这个$class=init_类($class_数组)['instances']['class1'];但我会想办法摆脱这个意大利面规则:当然你也可以这么做——这里只有一个警告。只要你想实例化一个以上的类,你就会调用这个函数,这样每次你想访问这个类的时候都会实例化对象。嗯,不错,谢谢你,我用了这个$class=init_classes($class_array)['instances']['class1'];但我会想办法摆脱这个意大利面规则:当然你也可以这么做——这里只有一个警告。只要你想实例化多个类,你就会调用这个函数,这样每次你想访问这个类的时候都会实例化这些对象。