상속 공통 오브젝트를 확장하는 확장/형태의 다른 개체에 의해 상속 :PHP 대상체 - I은 기본 객체 (form_field_base)가 다른 오브젝트
class form_field_base {
// Lots of code
}
class form_field_text extends form_field_base {
// Lots of code
}
class form_field_email extends form_field_text {
// Extending the text object to update validation, and set input type="email"
}
class form_field_file extends form_field_base {
// Lots of code, for example uploading files
}
은 "form_field_base은"제공 폼 필드 타입이 모두 사용하는 도우미 메서드. 예를 들어 html() 함수는 특정 객체 (form_field_email :: html_input)를 호출하여 필드를 가져온 다음 표준 태그가있는 문자열에 넣습니다.
이 모든 객체는 많은 프로젝트에서 사용됩니다.
그러나 내가하고있는이 최신 프로젝트는 "form_field_base"객체가 일부 도움말 텍스트 설정을 허용하도록 사용자 정의되어 있어야하며, 다른 프로젝트에는 필요하지 않은 기능이 있어야하며 향후 프로젝트에서 수행 할 수있는 기능이있을 수 있습니다. 다르게.
어떻게 구성해야합니까?
이상적으로 나는 "form_field_base"의 완전한 사본을 가지지 않을 것입니다, 그것은 코드 중복을 야기 할 것입니다.
그리고 오버 헤드가 꽤처럼 보인다 더미 중간 오브젝트가하기 : (
class form_field_base_common {
// Lots of code
}
class form_field_base extends form_field_base_common {
// By default is empty
}
class form_field_text_common extends form_field_base {
// Lots of code
}
class form_field_text extends form_field_text_common {
// ...
}
class form_field_email_common extends form_field_text {
// Extending the text object to update validation, and set input type="email"
}
class form_field_email extends form_field_email_common {
// ...
}
class form_field_file_common extends form_field_base {
// Lots of code, for example uploading files
}
class form_field_file extends form_field_file_common {
// ...
}
하나 하나가 자동으로로드 인 자신의 파일의 가지고 촬영을하거나 프로젝트 특정 위치에서, 존재하는 경우, 또는 모든 프로젝트가 액세스 할 수있는 공통 폴더에서) ... 폼을 지원하기 위해 이미 발견, 열거 나 구문 분석되어야하는 파일은 이미 8 개입니다.
더 나은 방법이 있습니까?
개인적인 방법과 데이터를 사용해 보셨습니까? 아니면 무슨 뜻이야? 동일한 코드베이스를 사용하는 다른 프로젝트에서 자손의 새로운 기능을 숨길 필요가 있습니까? – J0HN
"form_field_base"가 이미 상당히 크기 때문에 더 많은 기능/코드를 하나의 작은 프로젝트 (많은 프로젝트에서 사용하고있을 때)에 추가하면 낭비되는 것처럼 보입니다. –