2010-07-16 6 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

Если $event является экземпляром класса со свойством называется eventName и метод, называемый dbSafe, то, возможно, вы хотите сделать это:

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

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

НО, это не хорошая идея, чтобы включить ваши данные выходят во все ваши классы, как вы, кажется, здесь делаете. Вам действительно нужен центральный код управления базой данных, который обрабатывает все экранирование, поэтому вы не можете его забыть.

Смежные вопросы