Запрос динамического вызова метода PHP - PullRequest
1 голос
/ 30 декабря 2011

После создания моей собственной инфраструктуры MVC с очень хорошими временами в сложных приложениях у меня возник вопрос.Я динамически выполняю такие функции:

<?php
class dyn {
  public function do_me() {
    echo "hello";
  }
  public function execute_other_method($var = 0) {
    if ($var != 0 && method_exists($this, $var)) {
      $this->$var();
    }
  }
}

$do_method = "do_me"; // this variable is usually from GET or POST, it's dynamically set anyway
$class = new dyn;
$class->execute_other_method($do_method); // echoes hello
?>

Это работает безупречно, но мой вопрос: есть ли у него недостатки?

Если бы я мог улучшить этот метод выполнения, я бы с радостью сделал это.

Теперь я получаю в среднем 0,0080 с ~ 0,0150 с и макс. 0,0300 с при выполнении сложных веб-страниц на локальном ПК в качестве сервера (веб-страница включает запрос БД, preg_match / replace, вычисления и т. Д.).

1 Ответ

1 голос
/ 30 декабря 2011

Есть ли причина, по которой вы бы не использовали вместо этого метод __get? Он предназначен для того, чтобы делать в точности то, что вы делали выше, за исключением того, что вместо вызова execute_other_method вы бы назвали

$class->do_me(); // this method exists and __get will call the method for you.

или

$class->other_method(); // this method doesn't exist, but __get can handle it without throwing an error.

Тогда вам не придется передавать имя вашего метода в другой метод.

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