.equals()
сравнивает данные в классе (при условии, что функция реализована). ==
сравнивает местоположения указателя (расположение объекта в памяти).
==
возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals()
возвращает true, если два объекта содержат одни и те же данные equals()
Versus ==
в Java
Это может вам помочь.
То, что вы описали, по сути, синглтон. Пожалуйста, Смотрите этот вопрос по хорошим причинам, по которым вы не хотите этого делать.
Если вы действительно хотите сделать это, вы могли бы реализовать что-то вроде этого:
class a {
public static $instance;
public function __construct() {
self::$instance = $this;
}
public static function get() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
$a = a::get();
Вы должны реализовать рисунок Singleton. http://www.developertutorials.com/tuTorials/php/php-singleton-design-pattern-050729/page1.html
Чтобы расширить ответ Pikrass, вы в основном захотите сделать что-то вроде этого:
class class_A {
private static $instance = false;
public static function getInstance() {
if (!self::$instance) {
self::$instance = new class_A();
}
return self::$instance;
}
// actual class implementation goes here
}
// where you need to use the instance:
$mySingleton = class_A::getInstance();
// do something with $mySingleton
Узор синглтон, с примером Пример PHP из википедии , который я добавил метод «Cheqkexists», как это звучит так, как вы хотите проверить наличие наличия класса, не обязательно создавая его, если Это не выходит:
final class Singleton
{
protected static $_instance;
protected function __construct() # we don't permit an explicit call of the constructor! (like $v = new Singleton())
{ }
protected function __clone() # we don't permit cloning the singleton (like $x = clone $v)
{ }
public static function getInstance()
{
if( self::$_instance === NULL ) {
self::$_instance = new self();
}
return self::$_instance;
}
public static function checkExists()
{
return self::$_instance;
}
}
if(Singleton::checkExists())
$instance = Singleton::getInstance();
Что вы спрашиваете, невозможно (ну, возможно, не в техническом смысле, но очень непрактично). Предполагается, что у вас более глубокое недоразумение с целью объектов и классов.
Может, ты хочешь что-то вроде
for (get_defined_vars() as $key=>$value)
{
if ($value instanceof class_A)
return $value;
}
EDIT:
После дальнейшего чтения, вы должны прыгать через некоторые обручи, чтобы получить ссылки на объекты. Поэтому вам может понадобиться вернуть $$key;
вместо вернуть $value;
. Или какие-нибудь другие трюки, чтобы получить ссылку на объект.
Помните, что, используя одну кнопку, вы, по сути, создаете большую глобальную переменную . Если она имеет состояние, которое меняется, Ваш код может стать непредсказуемым. Так что будьте осторожны.