Врожденный «порок вхождения»

fixxxer

К.О.
Партнер клуба
на семерке зато, можно сходить по взрослому )
Ухх, это адовый изврат JS-style :)

Анонимные классы, как по мне, полезны скорее для этаких одноразовых адаптеров, типа
PHP:
$foo->addEventHandler(new class($myActionHandler) implements FooEventHandler
{
	private $myActionHandler;

	public function __construct(MyActionHandler $myActionHandler)
	{
		$this->myActionHandler = $myActionHandler;
	}

	public function onAction(FooActionEvent $event)
	{
		$this->myActionHandler->handleEvent(new MyEvent($event->type, $event->data));
	}

});
 
  • Like
Реакции: WMix

Breeze

goshogun
Команда форума
Партнер клуба
одноразовые адаптеры перерастут в гигантскую копипасту
 

WMix

герр M:)ller
Партнер клуба
PHP:
interface Foo{}
interface Bar{}
function getObj( $interfaces ){
    $tmpfname = tempnam("/tmp", "FOO");
    file_put_contents($tmpfname, "<"."?php
return new class implements ".implode(',', $interfaces)."{
   public \$foo=\"bar\";
};");
   $obj = include $tmpfname;
   return $obj;
}
$obj = getObj(['Foo', 'Bar']);
print_r($obj);
print_r($obj instanceof Foo);
print_r($obj instanceof Bar);
exit;
блин как страшно то ))
 

WMix

герр M:)ller
Партнер клуба
ага дампишь , а в ответ
PHP:
class@anonymous Object
(
    [/tmp/FOONrsO270xb7745701vars:class@anonymous:private] => Array
        (
            ...

        )

)
думаю половиной литра не обойдешься
 

WMix

герр M:)ller
Партнер клуба
PHP:
$obj = new class{

    private $a;
    private $b;

    public function result(){
        return $this->a+$this->b;
    }
};

// di
function inject($obj, $data){
    return (function($data) {
        foreach($data as $key => $val){
            $this->$key = $val;
        }
    })->call( $obj, $data );
}

inject($obj, ['a' => 100,'b' => 200]);

$this->assertEquals(300, $obj->result());
 

fixxxer

К.О.
Партнер клуба
Ну, а чо, через reflection-то всегда можно было. Или через кастинг в array :)
 

WMix

герр M:)ller
Партнер клуба
ну да, согласен, но решлекшин какбы многословно)
 
Сверху