Как «передать» атрибут класса методу класса? - PullRequest
0 голосов
/ 17 июля 2010

Как я могу "передать" eventName в dbSafe () следующим образом?Это возможно?Как будет выглядеть dbSafe ()?

$eventClass->eventName->dbSafe();

Я предполагаю, что dbSafe () будет выглядеть примерно так:

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

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Вы можете инкапсулировать каждый атрибут в новый класс, который предоставляет 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 голосов
/ 17 июля 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...