У меня есть дочерний класс, который содержит множество частных свойств.Родительский класс имеет методы __SET
& __GET
.
Родительский метод __SET
имеет filter_var($var, FILTER_CALLBACK, ['options' => 'childMethod');
, но он всегда завершается ошибкой filter_var(): First argument is expected to be a valid callback
См. Пример кода нижеВы можете скопировать и вставить его в http://phpfiddle.org/lite/
Для "childMethod" я попытался использовать:
$this->childMethod()
$this->childMethod
this->childMethod
this->childMethod()
childMethod()
childMethod
все ошибки
<?php
abstract class a {
public function callChild() {
$var = $this->iAmChild();
echo $var."<br />";
echo filter_var($var, FILTER_CALLBACK, ["options" => 'this->callback'])."<br />";
echo $this->callback($var)."<br />";
}
// abstract function callback();
}
class b extends a {
public function iAmChild() {
return "I am the child function";
}
public function callback($value) {
$value = strtoupper($value);
return $value;
}
}
$child = new b();
$child->callChild();
function convertSpace($string)
{
return str_replace(" ", "_", $string);
}
$string = "Peter is a great guy!";
echo filter_var($string, FILTER_CALLBACK,["options"=>"convertSpace"]);
?>
Возможно ли это?
Каждый дочерний класс является представлением таблицы базы данных, поэтому я хочу отфильтровать и контролировать "настройку" свойств.Каждый дочерний класс имеет список свойств, а также массив или массивы, которые предоставляют тип FILTER_*
для использования для каждого свойства.это работает для всех из них, кроме FILTER_CALLBACK
.
Как передать дочерний метод в качестве функции обратного вызова в filter_var
?