Eventy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
blizzboz
Člen | 13
+
0
-

Keď už nette podporuje properties, a extension methods mohli by ste pridať aj podporu eventov alebo aspoň funkcionálneho typu. Dosť mi to v PHP chýba všetky ostatné jazyky niečo podobné obsahujú.

norbe
Backer | 405
+
0
-

Podporu eventů už nette má. Viz. třeba formuláře ($form->onSubmit)
Vlastní event lze vytvořit nějak takhle:

class Foo extends Object {
	public $onXyz = array(); // pole callback-ů

	public function bar() {
		$this->onXyz(1); // zavolá všechny callbacky a jako parametr jim předá 1
	}
}
Honza Kuchař
Člen | 1662
+
0
-

A potom si event zaregistruješ třeba takhle:

function test($parm){
	echo $parm;
}
$foo = new Foo;
$foo->onXyz[] = callback("test"); // nebo array("test")

nebo

class Bar{
	static function test($param){
		echo $param;
	}
}
$foo = new Foo;
$foo->onXyz[] = callback("Bar","test"); // nebo array(...)

nebo

class Bar{
	function test($param){
		echo $param;
	}
}
$foo = new Foo;
$bar = new Bar;
$foo->onXyz[] = callback($bar,"test"); // nebo array(...)

nebo (od PHP 5.3)

$foo = new Foo;
$foo->onXyz[] = function($param){
	echo $param;
}

Editoval honzakuchar (29. 1. 2010 13:30)