Создать класс PHP -> Создать его объект в другом классе - PullRequest
7 голосов
/ 20 февраля 2010

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

class formChecker{

  ..... validation functions go here

}

class runFormChecker{

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

}

Можно ли это сделать? Я думаю о том, чтобы разработать несколько классов, которые можно запускать отдельно.

GF

Ответы [ 3 ]

8 голосов
/ 21 февраля 2010

Просто включите файл класса 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............
     }  
}

Подробнее здесь ...

Спасибо:)

8 голосов
/ 21 февраля 2010

Я бы предпочел передать экземпляр 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);
0 голосов
/ 21 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...