2014-02-20 4 views
1

Мне трудно понять несколько фрагментов кода. Надеюсь, вы можете помочь мне с этими вопросами.Нужно объяснять, как работают эти конкретные классы php

class ChatBase{ 

    // This constructor is used by all the chat classes: 

    public function __construct(array $options){ 

     foreach($options as $k=>$v){ 
      if(isset($this->$k)){ 
       $this->$k = $v; 
      } 
     } 
    } 
} 

В ChatUser имеется не более двух пустых защищенных переменных, и это расширяет chatBase. Institution:

$user = new ChatUser(array(
     'name'  => $name, 
     'gravatar' => $gravatar 
    )); 

Вопрос: что делает конструктор? Почему мы меняем эти ключи/ценности?

Другой вопрос:

class DB { 
    private static $instance; 
    private $MySQLi; 

    public static function init(array $dbOptions){ 
     if(self::$instance instanceof self){ 
      return false; 
     } 

     self::$instance = new self($dbOptions); 
    } 

В принципе у меня есть трудно понять, где это происходит от нового человека ($ dbOptions); Что такое «я»; ссылаясь в этом случае?

Как я могу console.log значение self или любой другой переменной в классе? Большое спасибо за это.

ответ

0

Прокомментируют следующий код:

public function __construct(array $options){ 

Создаем __constructor (который является функция выполняется автоматически при создании нового экземпляра класса с помощью new Class()) и принимать параметр, который должен быть массивом, и что мы сохраняем до $options.


foreach($options as $k=>$v){ 

Итерация $options и установите $k на значение ключа (например, name или gravatar) и установите $v к значению ($name или $gravatar в вашем initalizer)


 if(isset($this->$k)){ 

Проверьте, обладает ли текущий класс свойством по имени $k (ключ). Например. «имеет ли этот класс свойство« name »?


  $this->$k = $v; 

Если свойство существует, установите его на значение (например, $name.):

0

В первом вопросе, $this->$k = $v; создает новые свойства на $this.

В то время как петля, $k будет 'name' и $v будет $name. $this->$k такой же, как и $this->name, поэтому он устанавливает $this->name в $name.

Во втором вопросе self относится к текущему классу. Итак, new self($dbOptions) это как делать new DB($dbOptions).

1

1)

Конструктор позволяет задать свойство экземпляра (из «белого списка» уже определенных единиц), подав ассоциативный массив в конструктор при создании экземпляра объекта.


2)

Там нет такого понятия, как console.log в PHP, но вы можете использовать echo или var_dump вместо этого. В этом случае self относится к классу.

Смежные вопросы