Re: [SMARTY-DEV] foreach tag and objects
[email protected] (Boris Bezrukov)
| Newsgroups | php.smarty.dev |
|---|---|
| Message-ID | <[email protected]> |
David Zülke wrote: >Boris, > >I looked at your patch. You're removing the type casting of the variable to >an array. I believe this was done intentionally, because casting an int to >an array creates an array with one value, the int. Same goes for other >variable types. You cannot simply remove this. > >David > > > David, Yes, it does create, that what I was talking about. And it's, in fact, hack to allow people use scalars (scalars! not objects) in foreach tag. That's not bad, but it closes posibilities of using objects inside foreach tag. My patch will broke bc, yep... I apologize, do not commit it. But use if (!is_object($foo)) $foo = (array)$foo; then. And this will probably break one's script too. So is the price. It's _really_ bad not to give people posibilities to use iterators inside templates. PHP5 is OOP-driven, you can't steal such an important language feature. Patch with !is_object attached. > > >>-----Original Message----- >>From: Boris Bezrukov [mailto:[email protected]] >>Sent: Monday, January 10, 2005 5:59 PM >>To: Boris Bezrukov >>Cc: [email protected] >>Subject: Re: [SMARTY-DEV] foreach tag and objects >> >>Boris Bezrukov wrote: >> >> >> >>>Hello. >>>Smarty does use (array)$from syntax within compiled {foreach} tag. I >>>suppose that was introduced to avoid errors with $from in scalar data >>>types? Is indeed comfortable for PHP4, but PHP5 had introduced >>>iterators, so objects can now be used within foreach construct either. >>>How do you think if it should be removed? Yep, it can be replaced with >>>something like if(!is_object), but should it? >>> >>>Patch removing them attached. >>> >>>Thank you. >>> >>> >>> >>Forgot to attach file. >> >> > > >