2016-06-07 2 views
1

정적 속성이나 공용 속성을 사용하는 것이 더 나은지 혼란스러워합니다.
예를 들어 클래스가 EventDispatcher이고 최대 수신자 및 자동 트리거 구성을 원합니다.
은 하나 더, 그래서 더 나은 하나정적 속성을 언제 선언해야합니까?

<?php 
class EventDispatcher 
{ 
    public static $auto_trigger = 0; 
    public static $max_listeners = 30; 

또는이 하나

<?php 
class EventDispatcher 
{ 
    public $auto_trigger = 0; 
    public $max_listeners = 30; 

인가?
속성이 기본 속성 이외의 '구성'속성이기 때문에 혼란 스럽습니다. 내가 정적 한 글로벌 클래스, 매우 접근과 같은 것을 알고 있지만

나는 종종 정적 여부 사이의 선택에 혼란스러워. 그러나 실용적인 경우에는 선택하기가 여전히 어렵습니다.

+0

, 내 질문은 '때 아닌 상수 또는 공공 재산을 사용하는 정적 ??'처럼 –

답변

2

전반적으로 당신이에 대한 속성을 사용하려고하는지에 따라 달라집니다,하지만 난 보통은 객체의 인스턴스를하지 않고 어디에서 호출 할 수 있기 때문에, 정적 것들을 사용하지 않도록 내가 게터를 가진, 약간의 캡슐화를 선호

class BookModel { 
    const TABLE_NAME = 'books'; 
} 

echo BookModel::TABLE_NAME; 
: 당신이 속성은 변경하지 않을 것을 알고있는 경우와 세터 등

, 나는 개체의 인스턴스를하지 않고 당신은 또한 액세스 할 수있는 대신 상수를 사용하는 것이 좋을 것 그렇지 않으면

나는 비 정적 당신의 재산을 유지하기 위해 조언을 것 때문에이 개체 인스턴스에 연결됩니다 당신은 엄마 수 그것에 대한 게터와 세터. 당신은 내 question..It이 duplicate..If 내가 말해지는 것 오해 @DanyalSandeelo

+0

좋아, 요점은 ... 절대 정적 속성을 사용하지 마시겠습니까? 대신에 상수를 사용할 수 있기 때문에, 맞습니까? –

+0

그리고 공공 재산을 절대 사용하지 마시겠습니까? 우리는 물건을 제대로 만들기 위해 세터와 게터에서 만들어야하므로, 항상 개인 재산을 사용 하시겠습니까? –

+0

글쎄, "결코"극단적 인 조금이지만, 일반적으로 적은 실수를하지 않을거야 당신의 코드를 청소하고, 당신은 하나의 방법을 통해 속성을 설정하고있을 것입니다, 당신은 자신을 반복하지 않을 것을 의미합니다 재산으로 일부 작업을해야합니다. – TheFallen

관련 문제