2013-10-16 5 views
0

수십 개의 매개 변수가있는 함수를 사용할 경우 가이드 역할을하는 변수 이름을 사용할 수 있습니까? 나는 이런 식으로 뭔가 할 경우함수 매개 변수 규칙

public function addUser($user,$employeeno,$streetno,$street,$city,$state, 
     $zip,$mobileno,$officeno,$email,$password,$division,$something, 
     $something_else,$another_thing,$one_more) { 

} 

이 문제가 될 것입니다, 사용자를 추가하려면 :

예를 들어

.... addUser($user = 'hello', $empno = '123456', $streetno = '123', 
      $street = 'Stack Overflow Avenue', $city = 'Stack City', 
      $state = 'SC', $zip = 99999, $mob = '1234567890' // ... and so on 

나는 시도하고이 일을하지만, 어떤 의미 내가 거기 있습니다 알아야 할까? 5 년 넘게 PHP를 사용해 본 경험이있는 다른 사람들이 개발 한 샘플 코드와 시스템에서는이 문제가 발생하지 않았습니다. 신뢰할 수 있다면 함수 나 메소드를 전달하는 정보를 추적 할 수 있습니다.

답변

2

아무런 문제가 없습니다. 원하는만큼 많은 논점을 가질 수 있습니다. 물론 그들이 적절하게 지명 될 때 그것은 당신의 인생을 더 쉽게 할 것입니다.

주문을 잊어 버리거나 문제를 수정하려고 할 때 문제가 발생합니다. 기능을 사용하는 모든 곳을 변경해야하므로 유지 관리가 어려워집니다. 그런 다음 클라이언트 코드에

class User 
{ 
    protected $username; 

    protected $employeeNumber; 

    protected $streetNumber; 

    public function getUsername(); 

    public function setUsername($username); 

    public function setEmployeeNumber($number); 

} 

:

$user = new User(); 
$user->setUsername($user); 
$user->setEmployeeNumber($employeeno); 
//.... 

을 그리고 다음 register() 기능에 대한 힌트를 입력

당신은 그러나 User 클래스를 만들 수 있습니다.

public function register(User $user) 
{ 
    // Save the users data 
} 

사용자에 대한 모든 데이터가 사용자 클래스를 캡슐화하므로, 어떠한 변화가 register 함수에 추가적인 수정이 필요하지 않을되는 최종 결과.

0

기능적 코딩을 계속 사용하려면 배열을 항상 사용할 수 있습니다.

$data = array("user" => "hello", "employeeno" => 123456, "streetno" => 123, "street" => "Stack Overflow Avenue"); // etc... 
addUser($data); 

또는 버전 읽기 쉽게하려면 :

$data['user'] = "hello"; 
$data['employeeno'] = 123456; 
$data['streetno'] = 123; 
$data['street'] = "Stack Overflow Avenue"; 
addUser($data); 

또는 첫 번째 버전 정리 :

$data = array("user" => "hello", 
"employeeno" => 123456, 
"streetno" => 123, 
"street" => "Stack Overflow Avenue"); // etc... 
addUser($data);