Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
call_user_func(function($object) {return get_object_vars($object);}, $this);
$reflection = new ReflectionObject($this);
foreach ($reflection->getProperties(ReflectionProperty::IS_PUBLIC) as $property) { //...
На мой взгляд, использование типажей (или сходных механизмов) более естественно в динамически типизированных языках, нежели танцы с интерфейсами и наследованием.Теперь осталось написать с десяток книг про ТОП(типажи-ориентированное-программирование), и подождать с десяток лет пока созреют хоть какие-то стандарты проектирования в этом стиле. А сама концепция мне чем-то напоминает инженерию генных модификаций: с одной стороны может быть очень круто, с другой стороны очень опасно.
На русской википедии про трейты вообще бред написан.За чем же дело стало?
trait Foo {
public function f();
}
trait Bar {
public function g();
}
class A {
use Foo;
use Bar;
}
function x($obj) {
$obj->f();
$obj->g();
}
function x(A $obj) {
/**
* @param Foo|Bar $obj
*/
function x($obj) {
}
public function each($callback)
{
if (!is_callable($callback)) { throw new \InvalidArgumentException(); }
// ....
}
public function each(callable $callback)
{
// ...
}
Типажи и анонимные функции в PHP. Кря-кря!