如何将class属性“传递”给类方法?

时间:2010-07-16 22:18:58

标签: php oop class attributes methods

如何以下列方式将eventName“传递”到dbSafe()?这可能吗? dbSafe()会是什么样子?

$eventClass->eventName->dbSafe();

我猜dbSafe()看起来大致如下:

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

如果$event是具有名为eventName的属性的类的实例和名为dbSafe的方法,那么您可能希望这样做:

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

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

但是,将数据转移到所有类中并不是一个好主意,就像你在这里做的那样。你真的想要处理所有转义的中央数据库管理代码,所以你不能忘记它。