views:

38

answers:

2

How can I "pass" eventName to dbSafe() in the following fashion? Is this possible? What would dbSafe() look like?

$eventClass->eventName->dbSafe();

I'm guessing dbSafe() would look roughly like this:

public function dbSafe() {
     return mysql_real_escape_string($this);
}
+2  A: 

You could encapsulate every attribute in a new class that exposed dbSafe(). It's kind of like an oversimplified decorator pattern.

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();
infamouse
A: 

If $event is an instance of a class with a property called eventName and a method called dbSafe, then maybe you want to do this:

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

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

BUT, it's not a great idea to incorporate your data escaping into all of your classes, as you seem to be doing here. You really want central database management code that handles all escaping so you can't forget it.

grossvogel