4
클로저가 DSL (유창한 인터페이스)을 만드는 데 얼마나 도움이되는지 PHP로 보여주는 예를 들려 줄 수 있습니까?클로저가 DSL/유창한 인터페이스를 만드는 데 어떻게 도움이 되는가? PHP 예제?
편집 : 다음 질문에서 허용되는 대답은 중첩 폐쇄에 대해 설명합니다. 이 Experience with fluent interfaces? I need your opinion!
클로저가 DSL (유창한 인터페이스)을 만드는 데 얼마나 도움이되는지 PHP로 보여주는 예를 들려 줄 수 있습니까?클로저가 DSL/유창한 인터페이스를 만드는 데 어떻게 도움이 되는가? PHP 예제?
편집 : 다음 질문에서 허용되는 대답은 중첩 폐쇄에 대해 설명합니다. 이 Experience with fluent interfaces? I need your opinion!
이 그것이 큰 아니라, 내가 생각할 수있는 최초의 예이지만, 그것은 당신에게 아이디어 제공 : 누군가가 PHP에 그 예를 번역 할 수 있다면 그 역시 도움이 될 것입니다이
$db = new Database();
$filteredList = $db->select()
->from('my_table')
->where('id', 9)
->run()
->filter(function($record){
// apply some php code to filter records
});
나 '를 유창한 인터페이스를 사용하여 일부 ORM을 사용하여 데이터베이스를 쿼리 한 다음 얻은 레코드 세트에 일부 필터를 적용합니다.
public function filter ($callback)
{
return array_filter($this->recordSet, $callback);
}
당신이 아이디어를 얻을을 수행하십시오 run()
방법이 같을 수있는 filter()
방법이있는 레코드 집합 개체를 반환 상상?
개체가있는 중첩 폐쇄에 대한 구체적인 예를 제공 할 수도 있습니까? 원래 포스터가 제공 한 링크에서 허용되는 대답은 다음과 같은 예를 보여줍니다. 'Database .ConnectionString (cs => cs.User ("name"); .Pass ("xxx")) . 시간 초과 (100); ' PHP로 어떻게 하시겠습니까? 지금까지 제가 시도한 바에 따르면 PHP에서이 구문을 모방 할 수 없습니다. – qrazi
문제를 이해할 수 있는지 또는 Java에서 어떻게 해결되는지 확실하지 않습니다. 그러나, 나는 PHP에서 그것의 주위에 어떤 방법이 있다고 확신한다. (그것이 자바에서 어떻게 행해지는 것과 다를지라도). –
사실 C#입니다. 나는 Page Object 패턴을 사용하여 Selenium과 PHPUnit의 기능 테스트를하고있다. 페이지 객체를 유창하게 사용하고 싶습니다. 그래서 내가 같은 종류의 팝업 (pageC)을 사용하는 pageA 객체와 pageB 객체가 있다고 가정 해 보겠습니다. 팝업을 닫을 때 반환 할 객체는 무엇입니까? C# 예제에서는 중첩 된 클로저로 인해 걱정할 필요가 없습니다. 위의 예에서는 팝업을 닫을 때 닫음을 종료하고 pageA 또는 pageB를 계속 진행한다는 것을 의미합니다. – qrazi