나는 PHP 내가 클래스 메서드에 매개 변수로 선언 된 익명 클래스에 대한 코드를 다음 시도했습니다 7.1.11익명 클래스를 매개 변수로 일반 클래스의 클래스 메서드에 전달할 때 익명 클래스의 메서드를 호출하는 방법은 무엇입니까?
을 사용하고 있습니다. 익명 클래스에있는 메서드를 호출하고 싶습니다. 하지만 치명적인 오류가 발생합니다. 익명 클래스 메서드를 어떻게 성공적으로 호출해야합니까?
<?php
class Util {
private $logger;
public function __construct(){}
public function getLogger($logger) {
$this->logger = $logger;
}
public function setLogger($logger) {
$this->logger = $logger;
}
}
$util = new Util();
$util->setLogger(new class {
public function log($msg) {
echo $msg;
}
});
$util->setLogger()->log('Phil runs very fast'); // Ioutput should be : Phil runs very fast
?>
출력 나는 현재 받고 있어요 :
Fatal error: Uncaught ArgumentCountError: Too few arguments to function Util::setLogger(), 0 passed in anonymous_class_ex.php on line 27 and exactly 1 expected in anonymous_class_ex.php:13 Stack trace: #0 anonymous_class_ex.php(https://stackoverflow.com/posts/47605127/edit27): Util->setLogger() #1 {main} thrown in anonymous_class_ex.php on line 13
아 잡았다. 그러나 그는 "setLogger() 메소드는 익명의 클래스의 객체를 돌려 주어야한다."... 그렇지 않다. 아무것도 반환하지 않습니다. 당신의 코드를보십시오. 어쨌든. * getLogger' 메소드가 그것을 리턴합니다. 'setLogger'가 아니라 두 번째 호출에서 호출 코드에서 사용해야합니다. @ Badshah 지적한대로 : yer 그냥 잘못된 메서드를 호출합니다. –