Задать вопрос
@codenaki

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

Я новичок в пхп , перешол с джава .. Наткнулся на трудности работы с Reflection в пхп ..
Пытаюсь получить имя объекта как строку , который будет передан в параметр дата для
validate() функции ..
validate() передаст на проверку типов и относительно проверки типов вызовится метод .
Проблема в том что getShortName(); выдаёт имя в массиве и я не могу сравнить с тем именем который указал в строке .. Как я могу получить имя того типа класса который будет передан вовремя выполнения в виде строки ?

class Validator {

   private $regData;
   private $loginData;
   private $contactData;
   private $errors = [];

    private function getRegData():RegistrationData{
        return $this->regData;
    }

    private function getLoginData():LoginData {
        return $this->loginData;
    }

    private function getContactData():ContactData{
        return $this->contactData;
    }

    public function __construct(){}

    public function validate($data):Validator{
        $this->checkClassType($data);
        return $this;
    }

    private function checkClassType($data){
        $type = new ReflectionClass($data); // Need to be passed name of Class as string . 
        $type->getShortName();
       if("RegistrationData" == $type) {
           $this->regData = $data;
           $this->RegistrationValidator();
       }elseif("LoginData" == $type) {
           $this->loginData = $data;
           $this->LoginValidator();
       }elseif("ContactData" == $type) {
           $this->contactData = $data;
           $this->ContactValidator();
       }
   }
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@BorisKorobkov Куратор тега PHP
Web developer
Как правильно получить имя класса в виде строки?

Вариант 1.
Так сами же и написали:
$type = new ReflectionClass($data); // Need to be passed name of Class as string .
$type->getShortName();

Только результат надо сохранить в переменную и потом лучше switch вместо кучи if

Вариант 2:
ru2.php.net/manual/ru/function.get-class.php
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Проблема в том что getShortName(); выдаёт имя в массиве

getShortName возвращает строку. Вот и сравнивайте с ней.

if("RegistrationData" == $type->getShortName()) {
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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