Проверить имя метода, что свидетельствует о правильно
Я с помощью класса библиотеки почты framework Nette.
, Следовательно, в какой-то момент, вместо того, чтобы вызвать метод setSubject
- это правильный метод, я позвонил addSubject
, потому что забыл имя метода.
Вскоре, была мне возвращена следующая ошибка:
Method addSubject does not exists. Did you mean setSubject?
то есть, он предположил, что правильное имя метода класса было setSubject
.
могу ли я сделать это в одной (или нескольких) классов, мои в PHP?
Например:
class Myclass
{
public function callMethod()
{
}
}
(new MyClass)->callMyMethod(); // Lança a exceção sugerindo o nome correto
2
Author: Guilherme Lautert, 2015-10-27
1 answers
Magic Methods
Это должно быть реализации метода волшебный __колл - .
__call () срабатывает, когда вызываются методы, недоступные в объект.
, Например
class MyClass{
private $methods = array(
'runTest' => array(
'run',
'RunTest',
'runstest',
'runMyTest',
),
);
public function __call($name, $args){
$realName = null;
foreach ($this->methods as $method => $alias){
foreach ($alias as $k => $wrong){
if(preg_match("~{$wrong}~i", $name)){
$realName = $method;
break 2;
}
}
}
echo "Method {$name} does not exists.";
if(!empty($realName)){
echo " Did you mean {$realName}?";
}
}
public function runTest(){
echo 'HERE';
}
}
$obj = new MyClass;
$obj->run('in object context'); // Method run does not exists. Did you mean runTest?
$obj->runTest('in object context'); // HERE
3
Author: Guilherme Lautert, 2015-10-27 15:48:58