2010-08-15 3 views
0

나는 아주 기본적인 PHP 응용 프로그램을 작성 중이며 다양한 기능을 수행하기 위해 매우 복잡한 기능을 만들었습니다. display_user_nav(), display_user_list() 등. 논리적 인 방법으로 이들을 구성하는 방법이 필요합니다. 내가 실제로 필요로하는 것은 루비 모듈과 같은 것이지만, PHP를 찾을 수 없었습니다. 또한 프로그래밍 관점에서 볼 때 클래스에 속하지 않는다는 것은 이미 한 사용자에 대한 정보를 포함하는 User 객체를 가지고 있으므로 사용할 때마다 새 객체를 만들고 저장하고 싶지 않기 때문이라고 생각합니다. . 내가 지금 뭐하는 거지PHP Function Organization

는 :

display_user_table() 
display_user_edit_form() 

나는 가지 (종류의 루비처럼) 할 수 있도록하려면 무엇 :

User_Functions::Display::Table() 
User_Functions::Display::Edit_Form() 

어떤 제안을 부탁드립니다.

답변

2

PHP 5.3 이상을 사용하는 경우 namespaces을 사용할 수 있습니다.

그래서 당신은 당신의 기능을 (네임 스페이스 구분 \입니다) 이름을 지정할 수 있습니다 :

User_Functions\Display\Table 
User_Functions\Display\Edit_Form 

그러나, 그것은 나쁜 생각되지 않을 것 이것에 대한 클래스를 사용하는 것 같다. 당신이 그 표시 기능은 정말 (많은 사람들이 직렬화 메소드는 대상 객체에서 이해가되지 않는 생각 같은 방식으로) User에 속하지 않는 생각한다면, 당신은이 같은 클래스를 만들 수 있습니다

class DisplayUser { 
    private $user; 
    function __construct(User $u) { $this->user = $u; } 
    function table() { /* ... */ } 
    function displayForm() { /* ... */ } 
} 
+0

감사합니다. 나는 php로 꽤 아마추어 다. 그래서 나는 네임 스페이스를 구현하는 방법을 정말로 알지 못했다. 이것은 내가 찾고 있던 것입니다. 또한 이상적으로 MVC와 같은 구조를 사용하여 체계적으로 구성해야한다는 것을 이해하지만 솔직히 말해서 프로젝트의 규모는 작아서 그만한 가치가 없습니다. – Dave

0

을 방법에 대한 추상적 인 수업 !? 또는 싱글 톤? 헬퍼의

$helper = new UserHelper(); 
$helper->renderTable($user); 
$helper->renderForm($user, 'edit'); 

아키텍처는 더 complexx하고 그 효과에 유체 인터페이스 또는 뭔가를 구현할 수 : 코드

0

그럼 당신은 예를 들어 헬퍼 클래스로 그들을 깰 수를 구성 할 수있는 좋은 방법 이잖아 수업 운영 방식에 따라 다릅니다.

또 다른 방법은 데코레이터를 개체에 부착하여 이러한 기능을 수행하는 것입니다.

0

모든 HTML 출력을 처리하는 템플릿이 아니라 이러한 기능이 있으면 안됩니다.

문제는 함수를 잘못된 방식으로 사용하고 있다는 것입니다. 한 번만 여러 작업을 반복하는 함수를 만듭니다.
단일 작업에만 기능을 사용하지 마십시오.