logo       

RE: RE: [SMARTY] php5 Iterators.: msg#00001

Subject: RE: RE: [SMARTY] php5 Iterators.
+1

- David

> -----Original Message-----
> From: messju mohr [mailto:messju@xxxxxxxxxxxxxxxxxx]
> Sent: Tuesday, February 01, 2005 10:21 AM
> To: boots
> Cc: David Zülke; 'Mark Rogers'; smarty-dev@xxxxxxxxxxxxx
> Subject: Re: [SMARTY-DEV] RE: [SMARTY] php5 Iterators.
> 
> i know i'm a bit late in this discussion, but could we please "add
> this feature" to the 2.6.x-tree of Smarty?
> 
> "add this feature" simply means omitting the (array)-cast for arrays
> and objects. why is that such a big deal?
> 
> sure $smarty.foreach.foo.total would be bogus on iterators, but as
> someone already stated, people using iterators know that.
> 
> we not only enable iterators, but also SipleXML to be usable with
> smarty with just adding one line.
> 
> Index: Smarty_Compiler.class.php
> ===================================================================
> RCS file: /repository/smarty/libs/Smarty_Compiler.class.php,v
> retrieving revision 1.359
> diff -u -r1.359 Smarty_Compiler.class.php
> --- Smarty_Compiler.class.php   30 Jan 2005 21:54:39 -0000      1.359
> +++ Smarty_Compiler.class.php   1 Feb 2005 09:16:35 -0000
> @@ -1172,14 +1172,15 @@
>          }
> 
>          $output = '<?php ';
> +        $output .= "\$_from = $from; if (!is_array(\$_from) &&
> !is_object(\$_from)) { settype(\$_from, 'array'); }";
>          if (isset($name)) {
>              $foreach_props = "\$this->_foreach[$name]";
> -            $output .= "{$foreach_props} = array('total' => count(\$_from
> = (array)$from), 'iteration' => 0);\n";
> +            $output .= "{$foreach_props} = array('total' =>
> count(\$_from), 'iteration' => 0);\n";
>              $output .= "if ({$foreach_props}['total'] > 0):\n";
>              $output .= "    foreach (\$_from as $key_part\$this-
> >_tpl_vars['$item']):\n";
>              $output .= "        {$foreach_props}['iteration']++;\n";
>          } else {
> -            $output .= "if (count(\$_from = (array)$from)):\n";
> +            $output .= "if (count(\$_from)):\n";
>              $output .= "    foreach (\$_from as $key_part\$this-
> >_tpl_vars['$item']):\n";
>          }
>          $output .= '?>';
> 
> 
> 
> there is no diversion here and no making things more complicated to
> please php4 and 5 with the same compiler.
> 
> i really start getting pissed by people constantly stumbling about the
> array-cast in foreach and constantly begging for this "feature".
> 
> could we please change that?
> 
> greetings
> messju
> 
> 
> On Tue, Jan 25, 2005 at 01:02:05PM -0800, boots wrote:
> > The more I look at the iterator implementation in PHP5 (especially as
> > it is in the 5.0.x builds) the more I think support for it should not
> > be included into any 2.x series of Smarty. I think that a rewrite of
> > Smarty specificially designed for PHP5 would be the "right" place to
> > implement it. It still seems like awhile before that happens so perhaps
> > talking about proposed feature sets, design and usage goals would be
> > appropriate to get that ball rolling.
> >
> > As for 2.x support of iterators, I think it should be left out of the
> > core and provided either as an addin or in a PHP5 only class that
> > extends the base PHP4. Doing so can ease the transition as there are
> > already requests for Smarty versions that obey E_STRICT and supplying
> > an extended Smarty class intended for PHP5 is one way of supporting
> > that and other features that would be oddball in the PHP4
> > implementation.
> >
> > xo boots
> >
> > --- David Z?lke <dz@xxxxxxxxxxxxxx> wrote:
> > > We _could_ count the number of properties in the array using
> > > count((array)$foo); I can't see any way of resolving item count,
> > > position,
> > > first/last etc from an iterator. People who're using iterators are
> > > most
> > > likely aware of this and can work around it or just live with that
> > > "problem".
> > >
> > > You're right, it's time to tackle this one, but I also think the time
> > > might
> > > have come to do a complete PHP5 rewrite of Smarty. I'd be happy to
> > > help.
> > >
> > >   David
> > >
> > >
> > > > -----Original Message-----
> > > > From: boots [mailto:jayboots@xxxxxxxxx]
> > > > Sent: Monday, January 24, 2005 11:19 AM
> > > > To: David Z?lke; 'Mark Rogers'; smarty-dev@xxxxxxxxxxxxx
> > > > Cc: 'boots'
> > > > Subject: RE: [SMARTY-DEV] RE: [SMARTY] php5 Iterators.
> > > >
> > > > --- David Z|lke <dz@xxxxxxxxxxxxxx> wrote:
> > > > > Couldn't we just change the array casting so it is only performed
> > > if
> > > > > the variable is _not_ an object?
> > > > >
> > > > > foreach($object as $key => $ value) {}
> > > > > is the same as
> > > > > foreach((array)$object as $key => $ value) {}
> > > > >
> > > > > Both will loop over the properties of an object.
> > > > >
> > > > > It will also work in PHP5. If there's an iterator defined, PHP
> > > will
> > > > > use it, if not, it will loop over the properties just like in the
> > > > good
> > > > > old times.
> > > >
> > > > This reminds me of some correspondance from last year -- back in
> > > July
> > > > messju raised this issue with Monte and I and at the end of it the
> > > > following was proposed:
> > > >
> > > > $_from =& $this->_tpl_vars['list']; // by ref for php4 BC
> > > > if ( count($_from) && ( is_array($_from) || is_object($_from) ) ):
> > > >     foreach ($_from as $this->_tpl_vars['cell']):
> > > >     ...
> > > >     endforeach;
> > > > else:
> > > >    // err
> > > > endif;
> > > > unset($_from);
> > > >
> > > > At the time, messju was against the =& so as to not raise the
> > > > possiblity of subtle bugs. Otherwise, we were all in agreement that
> > > it
> > > > was a reasonable approach. As I still haven't really delved into
> > > PHP5,
> > > > I am in no position to understand the minute issues that might
> > > arise.
> > > > My understanding is that there is a difficulty with count and the
> > > need
> > > > for certain interfaces to be implemented for this to work properly
> > > for
> > > > objects. For example, Bok proposed a different solution
> > > > http://news.php.net/php.smarty.dev/2510 but messju pointed out some
> > > of
> > > > the issues that it raised: http://news.php.net/php.smarty.dev/2515
> > > >
> > > > My only concern is that too much PHP5 specific code to check for
> > > > correctness gets inserted into the foreach procedure thereby
> > > hampering
> > > > PHP4 performance in any way. Otherwise, it seems like the time is
> > > > approaching where this needs to be addressed.
> > > >
> > > > xo boots
> > > >
> > > > --
> > > > Smarty Development Mailing List (http://smarty.php.net/)
> > > > To unsubscribe, visit: http://www.php.net/unsub.php
> > > >
> > >
> > > --
> > > Smarty Development Mailing List (http://smarty.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > >
> > >
> >
> > --
> > Smarty Development Mailing List (http://smarty.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> 
> --
> Smarty Development Mailing List (http://smarty.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 

--
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
science.linguis...    culture.sf.lite...    video.mplayer.c...    yellowdog.gener...    ietf.rfc822/199...    emacs.help/2002...    redhat.release....    kernel.speakup/...    java.openejb.de...    debian.devel.gt...    xfree86.newbie/...    bug-tracking.ma...    pam/2003-05/msg...    games.devel.ope...    user-groups.lin...    music.pancham/2...    network.mq.deve...    web.html.genera...    arklinux.bugs/2...    linux.ecasound/...    qnx.openqnx.dev...    org.user-groups...    file-systems.sf...    trustix.contrib...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe