Рекомендуемая замена для call_user_method устаревшего?

Вы пытались сделать «Просмотр»> «Проблемы»? Он должен перечислить все проблемы в вашем текущем проекте.

enter image description here

Недостатком, в зависимости от ваших предпочтений, является то, что он также будет отображать ошибки других инструментов - eslint, tslint, type-cover и т. Д. .

23
задан NullUserException 13 November 2011 в 18:01
поделиться

3 ответа

Как вы сказали call_user_func может легко дублировать поведение этой функции. В чем проблема?

На странице call_user_method даже перечислены альтернативные варианты:

<?php
call_user_func(array($obj, $method_name), $parameter /* , ... */);
call_user_func(array(&$obj, $method_name), $parameter /* , ... */); // PHP 4
?>

Что касается , почему это было устарела, эта публикация объясняет это:

Это потому, что функции call_user_method() и call_user_method_array() могут быть легко дублированы с помощью:

old way:
call_user_method($func, $obj, "method", "args", "go", "here");

по-новому:
call_user_func(array(&$obj, "method"), "method", "args", "go", "here");

Лично я бы, наверное, согласился с предложением переменных переменных, опубликованным Чадом .

26
ответ дан 29 November 2019 в 01:52
поделиться

Сделайте что-то подобное:

Я использую что-то подобное в моем методе __construct ().

$params = array('a','b','c'); // PUT YOUR PARAMS IN $params DYNAMICALLY

call_user_func_array(array($this, $this->_request), array($params));

1-й аргумент: экземпляр Obect, 2-й аргумент: метод для вызова, 3-й аргумент: params

Прежде чем вы сможете проверить, есть ли метод или класс тоже, с помощью:

method_exists()
class_exists()

Приветствия

1
ответ дан 29 November 2019 в 01:52
поделиться

Вы можете сделать это с помощью переменных переменных , мне это кажется наиболее чистым. Вместо:

call_user_func(array($obj, $method_name), $parameter);

Вы делаете:

$obj->{$method_name}($parameter);
17
ответ дан 29 November 2019 в 01:52
поделиться
Другие вопросы по тегам:

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