2010-07-16 4 views

답변

2

당신은 dbSafe를 노출하는 새로운 클래스의 모든 속성을 캡슐화 수있다(). 그것은 지나치게 단순화 된 장식 패턴과 같습니다.

class Property { 
    private $value; 
    function dbSafe() { 
     return addslashes($this->value); //substitute for your function 
    } 
    function __construct($v) { $this->value = $v; } 
} 

class Event { 
    function __get($name) { 
     return new Property($name); 
    } 
} 

$e = new Event; 
echo $e->{"df'\\"}->dbSafe(); 
0

$eventeventName라는 속성과 dbSafe라는 메소드를 가진 클래스의 인스턴스 인 경우, 아마도 당신이하고 싶은 :

$safeName = $event->dbSafe ('eventName'); 

public function dbSafe ($propertyName){ 
    return mysql_real_escape_string($this->$propertyName); 
} 

을하지만, 그것은 통합 할 수있는 좋은 생각이 아니다 당신이 여기에서하고있는 것처럼 당신의 데이터는 당신의 모든 수업으로 탈출 할 수 있습니다. 모든 이스케이프 처리를 처리하는 중앙 데이터베이스 관리 코드가 필요하므로 잊어 버릴 수 없습니다.

관련 문제