Всем привет !
В данный момент читаю книгу "PHP Cookbook (3rd edition)" от David Sclar, Adam Trachtenberg.
В главе 7.15 приведен код ,я туда добавил свой метод WhyNotCall():
class User {
public function WhyNotCall(){
echo "1 2 3";
}
static function find($args) {
echo "<pre>";
print_r($args);
echo "</pre>";
}
static function __callStatic($method, $args) {
if (preg_match('/^findBy(.+)$/', $method, $matches)) {
return static::find(array('field' => $matches[1],
'value' => $args[0]));
}
}
}
$user = User::findById(123);
$user = User::findByEmail('rasmus@php.net');
Вопросы:
1) Мне хотелось бы добавить этот метод в __callStatic, чтобы она всегда выполнялась при вызове некого статического метода. Как сделать это? Я пробовал добавить это в __callStatic прямо перед return :
...
$this->WhyNotCall();
...
не помогло.
2) Почему static ? Просто впервые вижу такую конструкцию
.....
return static::find(array('field' => $matches[1],
'value' => $args[0]));
.....