을 설정하는 배열을 전달 나는 종종이 관용구를 참조하십시오변수
public function __construct($config)
{
if (array_key_exists('options', $config)) {
...
}
if (array_key_exists('driver_options', $config)) {
...
}
}
가 여기이 매개 변수를 사용하는 방식에 관심입니다.
(defun ct (&key options driver_options)
(do-something-with-option-and-driver_option))
을하지만 PHP에서 오전 이후 오히려 매개 변수의 목록을 생성자를 가지고 있고이 필요하지 않을 경우이를 null이 될 수 있도록 다음과 같습니다 내가 혀짤배기에 있다면 내가 할 것입니다.
다른 초기화에서 매개 변수로 배열을 사용하는 것에 대해 어떻게 생각하십니까?
답을 얻으려면 함수 사용자와 API 디자이너의 관점을 고려해야합니다.
혹시 이것이 코드 냄새라고 들었습니까?
감사
편집 : 나는 또한 당신이 배열 매개 변수와 관련된 몇 가지 질문/문제를 해결하는 것입니다. 특히 당신은 @Brent Baisley보다 같은 대답을 가지고
- @ircmaxell 경우 당신이 배열의 키를 잘못 입력하는 경우?
- 함수/메서드에 아무런 의미가없는 키가 있으면 어떻게됩니까?
PHP 스 니펫이 대답 일 것 같아서 질문에 혼란 스럽습니다. 구문은 배열에 전달되고 키는 검사되고 처리됩니다. if (array_key_exists ('options', $ config))'나는 그 자신이 isset 또는! empty를 사용할지라도 그 키가 존재 하는지를 확인하고 .. if (isset ($ config [ 'options'])) {// do something' –
실제로 array_key_exists, isset에 대해 논하지 않 잖아. 당신이 당신의 메서드/함수를 실행하는 데 필요한 모든 것을 포함하고있는 배열을 원한다면 묻고있다. – mathk