2012-10-26 4 views
1

가능한 중복 정적 배열을 액세스 할 :이 클래스가
how do i access static member of a class?올바른 방법은 PHP 클래스 내부의 정적 함수에서

합니다. 그 createNew 함수에서 나는 $reftbArr = tc_group::$tblFields;을 참조한다.

나는이 클래스와 비슷한 많은 클래스를 두 번 가지고있다. 그것들은 같은 메소드와 변수를 가지고 있지만 물론 클래스 이름은 다릅니다.

createNewtc_group::$tblFields;에 액세스하는 데 가장 좋은 방법은 있지만 하드 코딩 된 클래스 이름은 없습니까?

<?php 
class tc_group { 
    public $id; 
    public $password; 
    private static $tableName = "tc_group"; 

    public static $tblFields = array(
     ':id'  => array('value' => '','required' => 0), 
     ':password' => array('value' => '','required' => 0) 
    ); 

    public static function createNew($link , $tblfields){ 
    $reftbArr = tc_group::$tblFields; 
    } 
} 
?> 
+1

+1, downvotes 중 하나를 부정합니다. 세상을 더 좋은 곳으로 만들기 위해 노력하고 있습니다. :) – Nick

답변

1

$ tableFields = self :: $ tblFields;

print_r ($ tableFields); self::$variable

당신은 예를 들어 정적 사용할 수 있습니다 :

1

정적 키워드 self을 사용합니다.

public static function createNew($link , $tblfields){ 
    $reftbArr = self::$tblFields; 
} 
2

당신은 예를 들어 자기를 사용할 수 있습니다 static::$variable

의 차이는, 자기가 (무시 상속)에 사용되는 현재의 클래스에 액세스하는 것입니다 순종 정적 계승.

확장 대답

나는이 같은 클래스 몇 번 있습니다. 그들에는 동일한 방법 및 vars가있다 그러나 당연히 종류 이름은 다르다.

리팩토링이 필요한 것 같습니다. 어떤 경우에는 다른 클래스에서 정의한 모든 속성과 메서드를 정의하고 다른 클래스에서 제거하는 "추상 클래스"를 만듭니다 (현재 추상 클래스에 있음). 그런 다음 추상 클래스를 확장하여 필요한 경우에만 변경 사항을 포함하는 별도의 클래스를 만듭니다.