我想確定給定的對象是否已經創建。我看到有對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。 –