Как получить экземпляр определенного класса в PHP?

.equals() сравнивает данные в классе (при условии, что функция реализована). == сравнивает местоположения указателя (расположение объекта в памяти).

== возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals() возвращает true, если два объекта содержат одни и те же данные equals() Versus == в Java

Это может вам помочь.

13
задан bool.dev 28 October 2012 в 13:55
поделиться

9 ответов

То, что вы описали, по сути, синглтон. Пожалуйста, Смотрите этот вопрос по хорошим причинам, по которым вы не хотите этого делать.

Если вы действительно хотите сделать это, вы могли бы реализовать что-то вроде этого:

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();
33
ответ дан 1 December 2019 в 17:33
поделиться

Вы должны реализовать рисунок Singleton. http://www.developertutorials.com/tuTorials/php/php-singleton-design-pattern-050729/page1.html

4
ответ дан 1 December 2019 в 17:33
поделиться

Чтобы расширить ответ 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
1
ответ дан 1 December 2019 в 17:33
поделиться

Я думаю, что вы хотите, это шаблон реестра

1
ответ дан 1 December 2019 в 17:33
поделиться

Узор синглтон, с примером Пример 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();
2
ответ дан 1 December 2019 в 17:33
поделиться

Что вы спрашиваете, невозможно (ну, возможно, не в техническом смысле, но очень непрактично). Предполагается, что у вас более глубокое недоразумение с целью объектов и классов.

7
ответ дан 1 December 2019 в 17:33
поделиться

, если ($ Object Uscureof Class_a)

см. Руководство PHP: классы и объекты

1
ответ дан 1 December 2019 в 17:33
поделиться

Может, ты хочешь что-то вроде

for (get_defined_vars() as $key=>$value)
{
  if ($value instanceof class_A)
    return $value;
}

EDIT: После дальнейшего чтения, вы должны прыгать через некоторые обручи, чтобы получить ссылки на объекты. Поэтому вам может понадобиться вернуть $$key; вместо вернуть $value;. Или какие-нибудь другие трюки, чтобы получить ссылку на объект.

4
ответ дан 1 December 2019 в 17:33
поделиться

Помните, что, используя одну кнопку, вы, по сути, создаете большую глобальную переменную . Если она имеет состояние, которое меняется, Ваш код может стать непредсказуемым. Так что будьте осторожны.

0
ответ дан 1 December 2019 в 17:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: