Рубрики
Uncategorized

PHP Рефлексивные Обучающие экземпляры Операции с классами без Нового метода

Автор оригинала: David Wong.

Эта статья иллюстрирует использование нового метода для создания экземпляров операций класса в рефлексивном обучении PHP. Поделитесь для вашей справки следующим образом:

В предыдущем вводном примере отражения PHP кратко рассказывалось об использовании нескольких распространенных классов отражения PHP, но вы, возможно, не представляете, что вы можете сделать с отражением.

Теперь я собираюсь кое – что сделать с рефлексивными занятиями. Вы знаете, что для создания экземпляра класса требуется новое ключевое слово, а не новое ключевое слово. новое ХОРОШО? Мой ответ-да. Это может быть достигнуто путем размышления.

Сначала создайте файл ученика. php:

id = $id;
    $this->name = $name;
  }
  public function study()
  {
    echo $this->name.' is learning.....'.PHP_EOL;
  }
  public function showBag(){
    echo "My bag have ".$this->bag->all();
  }
}

Создайте новый файл run.php

isInstantiable()) {
    Throw new Exception ("class {$class} does not exist");
  }
  $constructor = $ref->getConstructor();
  if(is_null($constructor)) {
    return new $class;
  }
  $params = $constructor->getParameters();
  $resolveParams = [];
  foreach ($params as $key=>$value) {
    $name = $value->getName();
    if(isset($vars[$name])) {
      $resolveParams[] = $vars[$name];
    } else {
      $default = $value->isDefaultValueAvailable() ? $value->getDefaultValue() : null;
      if(is_null($default)) {
        if($value->getClass()) {
          $resolveParams[] = make($value->getClass()->getName(), $vars);
        } else {
          Throw new Exception ("{$name} has no value passed and no default value. "";
        }
      } else {
        $resolveParams[] = $default;
      }
    }
  }
  return $ref->newInstanceArgs($resolveParams);
}

Функция make в режиме запуска. PHP-это функция, которую мы пишем для создания экземпляра класса. Первый параметр передается в имени класса, а второй параметр-это данные параметров, которые необходимо передать конструктору класса.

В соответствии с параметрами конструктора студента, существует несколько ситуаций: (следующий код, пожалуйста, добавьте его для запуска. PHP в соответствии с различными условиями)

Сценарий 1: Нет значения $name предоставляется

try {
  $stu = make('Student', ['id' => 1]);
  print_r($stu);
  $stu->study();
} catch (Exception $e) {
  echo $e->getMessage();
}

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

Случай 2 предоставляет значение $name

try {
  $stu = make('Student', ['id' => 1, 'name' => 'li']);
  print_r($stu);
  $stu->study();
} catch (Exception $e) {
  echo $e->getMessage();
}

Случай третий: давайте сменим ученика. PHP

id = $id;
    $this->name = $name;
    $this->bag = $bag;
  }
  public function study()
  {
    echo $this->name.' is learning.....'.PHP_EOL;
  }
  public function showBag(){
    echo "My bag is ".$this->bag->name();
  }
}

Как вы можете видеть, вы добавляете параметр $bag в класс учащихся типа Bag

На этот раз беги.

 1, 'name' => 'li']);
  print_r($stu);
  $stu->study();
  $stu->showBag();
} catch (Exception $e) {
  echo $e->getMessage();
}

Вы можете видеть, что третий параметр конструктора, $bag, автоматически создается и передается конструктору класса Student. Эта часть имеет решающее значение. Эта часть может быть использована для реализации внедрения зависимостей. Нам не нужно создавать экземпляр объекта вручную. Мы можем автоматически создать экземпляр объекта в соответствии с соответствующим классом параметра. Таким образом, реализуется разделение между классами. Если вы изучали Laravel, вы должны быть знакомы с ним.

Больше читателей, интересующихся контентом, связанным с PHP, могут ознакомиться с темами этого сайта: Введение в объектно-ориентированное программирование Php, Введение в навыки работы с массивами PHP, Введение в базовую грамматику PHP, Краткое описание работы PHP и использования операторов, Краткое описание использования строк Php и данных php+mysql. Введение в Библиотечные операции и Краткое описание общих навыков работы с базами данных на PHP

Я надеюсь, что эта статья будет полезна для разработки программ на PHP для всех.

Оригинал: “https://developpaper.com/php-reflective-learning-instances-class-operations-without-new-method/”