Создайте Класс PHP->, Создают объект его в другом классе

Я создал класс PHP, названный formChecker.php. Это проверяет форму. Как программист Java, я хотел бы придерживаться идеи создать экземпляр этого класса в другом классе и выполнить его оттуда. Это, кажется, не работает на меня. Следующее является демонстрацией:

class formChecker{

  ..... validation functions go here

}

class runFormChecker{

....  create instance of formchecker here and use it's methods etc.

}

Это может быть сделано? То, о чем я думаю, разрабатывает много классов, которые могут быть выполнены отдельно.

GF

7
задан VolkerK 20 February 2010 в 21:01
поделиться

3 ответа

Я бы предпочел передать экземпляр formChecker (или что-то, реализующее определенный интерфейс) экземпляру runFormChecker. см. http://en.wikipedia.org/wiki/Dependency_injection

Может быть так же просто, как

interface FormChecker {
  public function foo($x);
}

class MyFormChecker implements FormChecker
  public function foo($x) {
    return true;
  }
}

class RunFormChecker {
  protected $formChecker=null;
  public function __construct(FormChecker $fc) {
    $this->formChecker = $fc;
  }

  // ....
}

$rfc = new RunFormChecker(new MyFormChecker);
8
ответ дан 6 December 2019 в 12:50
поделиться

Да, и это не странно. Обычно вы создаете экземпляр formChecker внутри экземпляра runFormChecker , но не на уровне класса.

0
ответ дан 6 December 2019 в 12:50
поделиться

Просто включите файл класса formChecker непосредственно перед классом, в котором вы хотите его использовать, например:

include "formChecker.php"

class runFormChecker{

     function __construct() {
      $obj = new formChecker;  // create instance
      // more processing............
     }  
}

Если, однако, у вас есть оба класса в одном файле (что плохо), тогда нет необходимости включать файл, вы можете сразу создать его экземпляр, например:

class formChecker{
  // ............
}

class runFormChecker{

     function __construct() {
      $obj = new formChecker;  // create instance
      // more processing............
     }  
}

Дополнительная информация здесь ....

Спасибо :)

{ {1}}
8
ответ дан 6 December 2019 в 12:50
поделиться
Другие вопросы по тегам:

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