[addon rsscontrol] RssControl

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

Ahoj, vím že je jednodušší si to vyřešit takto "pubDate" => date(DateTime::RFC822,$date) (kde $date je unix timestamp).

Ale zajímá mě spíš tento kus kódu – co řeším – RssControl automaticky poupraví atributy položky ( chybí li guid, doplní ho z link a naopak, formátuje správně datum), tím že v render() volá event onPrepareItem na každé položce. Základní zaregistrovaný handler prepareItem právě dělá onu konverzi. Jenže mi to nefunguje, prostě data se nezmění. Prostě $item je nezměněná jako by nebyla předána referencí.

//v deklaraci
public $onPrepareItem;
//__contsruct
$this->onPrepareItem[] = array($this, "prepareItem");
//render
$items = $this->getItems();
foreach ($items as &$item) {
	$this->onPrepareItem($item); //event
	$this->onPrepareItem(&$item); //úprava * viz dále

//...
public function prepareItem($item){ // překvapivě zde to funguje bez/s amperstandem
		if (isset($item["pubDate"])) {
			$item["pubDate"] = self::prepareDate($item["pubDate"]);
		}
	}

Pokud provedu úpravu, funguje to, ale háže to chybu Deprecated: Call-time pass-by-reference has been deprecated in ...\RssControl.php on line 65

Měnilo se něco ve vnitřnostech PHP, resp ObjectMixin? Jak to řešit bez all-time pass-by-reference?

PS: proč je „topic“ locked?

Editoval bojovyletoun (13. 6. 2011 16:24)