2011-02-07 2 views
1

두 개의 오브젝트가 있습니다.다른 객체의 두 메서드를 연결하는 가장 좋은 방법은 무엇입니까?

$user = new user($user_id); 
$product = new product($product_id); 

사용자가 추가 한 제품. 새 제품을 추가하려면 $product 객체를 호출하고, 통계를 업데이트하려면 $user 객체를 호출해야합니다. 이 두 가지 행동은 서로 완전히 연결되어 있습니다. 어떻게 불러야합니까?

두 가지 방법이 있습니다.

# 1) two separate functions 
$product->add_new($product_data); 
$user->added_product(); 

# 2) calling static method in the end of the first 
$product->add_new($product_data, $user->id); 
function add_new($data, $user_id) 
{ 
    ... // data processing 

    user::added_product($user_id); // static 
} 

기능 개발에 가장 적합한 것은 무엇입니까? 첫 번째 방법 (암시 적으로 두 개의 연결된 함수 호출) 또는 두 번째, 정적 함수 사용
정적 메서드가 마음에 들지 않지만 제품이 어떤 이유로 추가되지 않은 경우 사용자 통계를 추가해서는 안됩니다. 그래서 if/else가 코드의 최상위 레벨에있을 것입니다. 그리고 이것은 좋지 않습니다 (나는 클래스 내부에 있기를 원합니다).
아니면 다른 방법이있을 수 있습니다.

답변

0

아마 통계에 대해 별도의 클래스를 생성하고 다음과 같이 사용합니다 :

$stats = new Statistics($user_id); 
$stats->add_product($product_id); 
관련 문제