다른 고객을 위해 사용자 정의 할 수있는 코드 기반이 있습니다. 이것은 대부분의 경우 클래스 이름을 사용하여 각 고객 별 상수가있는 클래스를로드하여 처리됩니다. 클래스 이름 충돌이 관리되며, 한 번에 하나만로드됩니다.화이트 라벨을 붙인 PHP 코드 모범 사례
class Customer() {
const CUST_NAME = 'Alpha Corp.';
}
class Customer() {
const CUST_NAME = 'Beta, Inc.';
}
각 고객에게 해당 코드가 국제화되기를 바랍니다. 따라서 프로그램은 언어 별 소스에서 표시된 텍스트를 그릴 수 있지만 고객 별 정보와 관련하여 여전히 동적입니다. i18n에 대해 고객 별 정보가 무관하다고 가정합니다. 이렇게하면 언어 당 고객 당 하나의 파일에서 언어 당 하나의 파일로 파일 수가 줄어 듭니다. 원하는 결과는
// in separate language files:
$greeting = 'Hello. Welcome to ';
$greeting = 'Hola. Bienvenido a ';
// in front-end
$greeting = get $greeting in desired language;
echo $greeting, Customer::CUST_NAME, "\n";
나는 이러한 요구 사항을 충족하기 위해 고안 할 수있는 가장 좋은 솔루션은 여러 고객 및/또는 여러 언어를 처리 할 것 인 국제화 클래스 (또는 클래스의 가족)과 유사한 무언가를 구현하는 것입니다. 그러나 문자열 리터럴 또는 상수와 달리 메서드를 호출하는 것은 실행 비용이 많이 듭니다. 이 메서드는 상수 또는 외부 소스의 번역을 결합하여 Customer 클래스의 값과 결합합니다. (I 지금은 PHP 5.2와 함께 붙어 있어요, 그래서 클래스 속성에 대한 히어 닥의 미묘한가/상수를 사용할 수 없습니다.)
class i18n_en() {
const GREETING = 'Hello. Welcome to ';
static public function getGreeting() {
return self::GREETING . Customer::CUST_NAME;
}
}
또한, 나는 "템플릿 접근 방식"에 대한 스크립트를 쓸 수있는 I 유지 텍스트 플레이스 홀더가있는 클래스의 템플릿 파일. 고객 별 파일은 고객이 생성 할 때이 템플리트에서 생성됩니다. 필요에 따라 파일을 생성하거나 다시 생성하는 것이 쉬울 지 모르지만 각 언어에 대해 고객별로 별도의 파일이 필요합니다. 따라서, 그것은 내 욕구를 훌륭하게 충족시키지 못합니다.
확실히이 문제에 직면 한 것은 아닙니다. 누구든지 대안이나 모범 사례를 제공 할 수 있습니까? 코드가 새로운 고객을 만드는 것보다 여러 번 실행되기 때문에 유지 관리를 쉽게하기 위해 런타임 효율성을 선호합니다. 물론 훌륭한 솔루션이 두 가지를 제공 할 것입니다.
당신에게 메서드 호출이 그'getGreeting()'방식의 천 호출을 통해 어떤 프로파일 링 가능한 오버 헤드가 발생합니다 특정 있습니까? 정적 문자열 연결의 번거 로움에 가치가 있습니까? – mario