我想确定给定的对象是否已经创建。我看到有对class_exists
和method_exists
但什么,我试图找出是,如果new Foo()
已调用的方法(希望找出变量它被分配到,但是这并不重要)。如何重用一个对象如果它存在
回答
如果我正确理解你,你只是想初始化对象一次。如果这是为什么不使用单例模式?这将释放你的对象存在的检查:
class MyClass {
private static $instance;
private function __construct() {}
public static function getInstance() {
if (empty(self::$instance)) {
self::$instance = new __CLASS__();
}
return self::$instance;
}
}
您可以使用此代码:
$obj = MyClass::getInstance();
用类似的方法,你可以定义附加的辅助静态方法将检查对象是否被实例化或不。你只需要将静态的实例保存在你的类中。
我不确定将它作为单例(我不知道别人是否创建了这个对象的倍数),但是你怎么看待创建一个静态方法来指示构造器是否被调用? – gandalf007
@ gandalf007我在第一个答案处写了这个。是的,你可以做到这一点,这将是完美的。 – ioseb
对不起,看错的那部分 – gandalf007
编辑:看你需要这个在上述评论的原因之后,这绝对不是去了解它的方式。
这里亚去。它可以优化一点,但应该工作正常。
而且,每次路过get_defined_vars()
的功能是必要的,因为该功能仅这就是所谓的范围内检索瓦尔。在函数内调用它只会给该函数范围内的变量。
<?php
function isClassDeclared($class_name, $vars, $return_var_name = FALSE) {
foreach ($vars AS $name => $val) {
if (is_object($val) && $val instanceof $class_name)
return $return_var_name ? $name : TRUE;
}
return FALSE;
}
class Foo {}
$foo = new Foo;
echo '<pre>';
var_dump(isClassDeclared('foo', get_defined_vars(), TRUE));
var_dump(isClassDeclared('bar', get_defined_vars(), TRUE));
echo '</pre>';
它看起来像这样的工作,我很紧张,通过get_defined_vars每次aboutlooping但基于我诚然含糊要求这个解决方案应该工作 – gandalf007
是的,您可以使用Singleton模式为你所需要的会更好。 – simshaun
- 1. 如何更改一个对象,如果它在一个ArrayList中?
- 2. 编写一个函数删除对象,如果它存在
- 3. 如何从另一个对象添加属性,如果它不存在于JavaScript中的第一个对象中
- 4. MongoDB和mongoose:如何添加一个对象,如果它不存在
- 5. 如何创建一个对象,如果它有多个belongs_to?
- 6. 如何在rspec的“用”相匹配,如果它是一个复杂的对象
- 7. 更新对象或创建它,如果它不存在?
- 8. 如果Java是一个文件对象,它如何比较一个Key?
- 9. 如何创建一个函数来检查的JavaScript对象的属性,并设置它,如果它不存在
- 10. Linux shell重命名一个文件,如果它存在
- 11. 重载一个片段android如果存在其他创建它
- 12. 如果存在该对象,该如何获取;如果该对象不存在,该如何获取?
- 13. 如何在Python Django中创建一个新对象,如果它不存在于另外两个类中?
- 14. 如果它存在于另一个阵列中,则从NSMutableArray中删除对象
- 15. 如何让nginx重试一个静态文件,如果它不存在
- 16. 如何重新创建一个索引,如果它已经与liquibase存在
- 17. 使用iTextSharp,我如何获得一个对象,如果我有它是indirectReference
- 18. 指定如何序列化我的对象,如果它是在一个列表
- 19. 如何调用一个变量具有一个.js对象“ - ”它
- 20. 如何访问一个对象,它是在一个列表
- 21. 我可以创建一个OneToOneField,它将创建一个对象,如果它不存在?
- 22. 如果存在对象在Maya中添加一个新的对象名称Python
- 23. 如何在一个对象
- 24. 如何设置一个var,如果它存在于字典中?
- 25. 如何让webpack跳过一个模块,如果它不存在
- 26. 如何设置一个成员,如果它存在?
- 27. MySQL:如何添加一个列,如果它不存在?
- 28. 如何删除整行,如果一个单词存在它?
- 29. 如何,如果它存在于一个组的范围
- 30. 如何创建一个文件夹,如果它不存在?
我不认为有一种方法可以做到这一点。为什么你需要首先找出答案?对于您想实现的目标,可能会有更好的解决方案 –
您需要指定您的用例,因为您要求的内容对于纯粹的PHP语言来说是不可能的,但它不提供这样的用例。 – hakre
isset($ variable)函数用于确定是否设置了变量并且不是NULL。 –