2012-07-27 4 views
0

가능한 중복 :
Access variable in classPHP에서 클래스 - 전역 변수를 얻는 방법은 무엇입니까?

I 클래스에 대한 몇 가지 캐싱 기능을 구축하고있어 모두 동일는 "클래스 전역"배열, 즉 배열을 싶습니다 인스턴스가 아니라 상수. 어떻게 할 수 있습니까?

+1

'public static $ someName' :? 당신이 달성 한 구체적인 문제는 무엇입니까? Btw : "클래스 전역 변수"가 아닌 "정적 속성"입니다.) – KingCrunch

+1

클래스 정적 변수를 찾으려고합니다. http://php.net/manual/en/language.oop5.static.php – FatalError

+0

Ooh, 'static'을 사용할뿐 아니라 로컬 변수 (MyClass :: $ CACHE 대신 $ CACHE)를 사용했습니다. – Andreas

답변

-1

귀하의 솔루션은 static 변수입니다!

<?php 
// ... 
class Foo { 
    public static $array; 


    public static function addValue($key, $value) { 
    self::$array[$key] = $value; 
    } 

    public static function getArrayKey($key) { 
    if(isset(self::$array[$key])) { 
     return self::$array[$key]; 
    } 
    } 
} 

Foo::addValue('foo', 'bar'); 
echo(Foo::getArrayKey('foo')); 
// ... 
?> 
+0

글로벌 변수가 악조건에 대해 언급하십시오. –

+0

@Truth는 질문이 아니었다 ... – thedom

+0

그것은 추가 정보로 언급 할 가치가있다. 유일한 해결책이 나쁘다는 대답을 할 때 대답으로 지정합니다. (굵게, 기울임 꼴, 큰 회색 배경, 실제로 대문자로 된 문자 : P) –

0

정적 변수로 얻을 수 있습니다.

하지만 글로벌 상태가 좋지 않기 때문에 솔직히해서는 안됩니다.

당신이 그것을 같은 것을 보일 것해야하는 경우 : 당신은 클래스 자체 또는 서브 클래스, 및 SomeClass::$var 또는 외부에서 $ instanceOfSomeClass::$var 내에서 self::$var 또는 static::$var에 액세스 것

class SomeClass 
{ 
    static public $var = array(); 
} 

합니다.

+0

캐시 된 SQL 결과가 어떻게 전역이 될 수 있습니까? – Andreas

+0

해당 정보가 관련된 시스템 비트에만 특정 결과가 필요합니다. 나머지 시스템은 알 필요가 없으며 나중에 특정 데이터에 액세스하지 않아야하는 시스템 부분이 실제로 실제로 문제를 일으킬 수 있습니다. 그것은 또한 다른 많은 문제들을 소개합니다. http://programmers.stackexchange.com/questions/148108/why-is-global-state-so-evil – GordonM

+0

.. 그게 내가 관련 수업에 넣는 이유입니다. – Andreas

관련 문제