# Changes between 5.1.1 & 5.1.2-dev breaks PHP - Smarty plugin

- Thread: https://externals.io/message/21252
- Original archive: https://news-web.php.net/php.internals/21252
- Started by Holografix on 2005-12-16T17:12:06+00:00
- Messages: 4
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #21252 — Holografix — 2005-12-16T17:12:06+00:00

URL: https://externals.io/message/21252#21252

Hello
This works fine with 5.1.1

PHP

include '/wwwroot/lib/smarty/Smarty.class.php';

$tpl = new Smarty;
$tpl->plugins_dir = array('/wwwroot/lib/smarty/plugins', 
'/wwwroot/home/testes/plugins');
$tpl->force_compile = true;

$link = mysql_connect('localhost', 'xxxxx', 'yyyyy');
mysql_select_db('dbteste');

$res = mysql_query('SELECT * FROM Photos ORDER BY PhotoID');
while ($row = mysql_fetch_assoc($res)) {
   $rows[] = $row;
}

$tpl->assign("images", $rows);
$tpl->display("table2.tpl");

Template
<html>
<body>
<h1>Test</h1>
{table_foreach from=$images item=image cols=4 rows=4}
<img src="{$image.Photo}" />
{/table_foreach}
</body>
</html>

The plugin is table_foreach, a bit long to copy & paste here
http://smarty.incutio.com/?page=table_foreach

Something change between 5.1.1 release and today 5.1.2-dev snapshot.

I am getting this errors in my php error log file

[16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be 
passed by reference in C:\wwwroot\lib\smarty\Smarty_Compiler.class.php on 
line 729
[16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be 
passed by reference in 
C:\wwwroot\home\tests\templates_c\%%72^721^721E602F%%table2.tpl.php on line 
8
[16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be 
passed by reference in 
C:\wwwroot\home\tests\templates_c\%%72^721^721E602F%%table2.tpl.php on line 
11

LINE 729 - Smarty_Compiler.class.php
$arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, 
$_cache_attrs='');

LINE 8 - %%72^721^721E602F%%table2.tpl.php
<?php $this->_tag_stack[] = array('table_foreach', array('from' => 
$this->_tpl_vars['images'],'item' => 'image','cols' => 4,'rows' => 4)); 
smarty_block_table_foreach($this->_tag_stack[count($this->_tag_stack)-1][1], 
null, $this, $_block_repeat=true);while ($_block_repeat) { `ob_start()`; ?>

LINE 11 - %%72^721^721E602F%%table2.tpl.php
<?php $_block_content = `ob_get_contents()`; `ob_end_clean()`; echo 
smarty_block_table_foreach($this->_tag_stack[count($this->_tag_stack)-1][1], 
$_block_content, $this, $_block_repeat=false); } 
array_pop($this->_tag_stack); ?>

Best regards

---

## #21253 — Antony Dovgal — 2005-12-16T17:49:41+00:00

URL: https://externals.io/message/21252#21253 · In reply to: #21252

Please report this to smarty-dev@lists.php.net


> Hello
> This works fine with 5.1.1
> 
> PHP
> 
> include '/wwwroot/lib/smarty/Smarty.class.php';
> 
> $tpl = new Smarty;
> $tpl->plugins_dir = array('/wwwroot/lib/smarty/plugins', 
> '/wwwroot/home/testes/plugins');
> $tpl->force_compile = true;
> 
> $link = mysql_connect('localhost', 'xxxxx', 'yyyyy');
> mysql_select_db('dbteste');
> 
> $res = mysql_query('SELECT * FROM Photos ORDER BY PhotoID');
> while ($row = mysql_fetch_assoc($res)) {
>    $rows[] = $row;
> }
> 
> $tpl->assign("images", $rows);
> $tpl->display("table2.tpl");
> 
> Template
> <html>
> <body>
> <h1>Test</h1>
> {table_foreach from=$images item=image cols=4 rows=4}
> <img src="{$image.Photo}" />
> {/table_foreach}
> </body>
> </html>
> 
> The plugin is table_foreach, a bit long to copy & paste here
> http://smarty.incutio.com/?page=table_foreach
> 
> Something change between 5.1.1 release and today 5.1.2-dev snapshot.
> 
> I am getting this errors in my php error log file
> 
> [16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be 
> passed by reference in C:\wwwroot\lib\smarty\Smarty_Compiler.class.php on 
> line 729
> [16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be 
> passed by reference in 
> C:\wwwroot\home\tests\templates_c\%%72^721^721E602F%%table2.tpl.php on line 
> 8
> [16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be 
> passed by reference in 
> C:\wwwroot\home\tests\templates_c\%%72^721^721E602F%%table2.tpl.php on line 
> 11
> 
> LINE 729 - Smarty_Compiler.class.php
> $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, 
> $_cache_attrs='');
> 
> LINE 8 - %%72^721^721E602F%%table2.tpl.php
> <?php $this->_tag_stack[] = array('table_foreach', array('from' => 
> $this->_tpl_vars['images'],'item' => 'image','cols' => 4,'rows' => 4)); 
> smarty_block_table_foreach($this->_tag_stack[count($this->_tag_stack)-1][1], 
> null, $this, $_block_repeat=true);while ($_block_repeat) { `ob_start()`; ?>
> 
> LINE 11 - %%72^721^721E602F%%table2.tpl.php
> <?php $_block_content = `ob_get_contents()`; `ob_end_clean()`; echo 
> smarty_block_table_foreach($this->_tag_stack[count($this->_tag_stack)-1][1], 
> $_block_content, $this, $_block_repeat=false); } 
> array_pop($this->_tag_stack); ?>
> 
> Best regards
> 


-- 
Wbr, 
Antony Dovgal

---

## #21256 — Jani Taskinen — 2005-12-16T17:55:52+00:00

URL: https://externals.io/message/21252#21256 · In reply to: #21252

I think it was just change of `E_NOTICE` to E_STRICT? :)

     --Jani




>
> Hello
> This works fine with 5.1.1
>
> PHP
>
> include '/wwwroot/lib/smarty/Smarty.class.php';
>
> $tpl = new Smarty;
> $tpl->plugins_dir = array('/wwwroot/lib/smarty/plugins',
> '/wwwroot/home/testes/plugins');
> $tpl->force_compile = true;
>
> $link = mysql_connect('localhost', 'xxxxx', 'yyyyy');
> mysql_select_db('dbteste');
>
> $res = mysql_query('SELECT * FROM Photos ORDER BY PhotoID');
> while ($row = mysql_fetch_assoc($res)) {
>   $rows[] = $row;
> }
>
> $tpl->assign("images", $rows);
> $tpl->display("table2.tpl");
>
> Template
> <html>
> <body>
> <h1>Test</h1>
> {table_foreach from=$images item=image cols=4 rows=4}
> <img src="{$image.Photo}" />
> {/table_foreach}
> </body>
> </html>
>
> The plugin is table_foreach, a bit long to copy & paste here
> http://smarty.incutio.com/?page=table_foreach
>
> Something change between 5.1.1 release and today 5.1.2-dev snapshot.
>
> I am getting this errors in my php error log file
>
> [16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be
> passed by reference in C:\wwwroot\lib\smarty\Smarty_Compiler.class.php on
> line 729
> [16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be
> passed by reference in
> C:\wwwroot\home\tests\templates_c\%%72^721^721E602F%%table2.tpl.php on line
> 8
> [16-Dec-2005 17:05:32] PHP Strict Standards:  Only variables should be
> passed by reference in
> C:\wwwroot\home\tests\templates_c\%%72^721^721E602F%%table2.tpl.php on line
> 11
>
> LINE 729 - Smarty_Compiler.class.php
> $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs,
> $_cache_attrs='');
>
> LINE 8 - %%72^721^721E602F%%table2.tpl.php
> <?php $this->_tag_stack[] = array('table_foreach', array('from' =>
> $this->_tpl_vars['images'],'item' => 'image','cols' => 4,'rows' => 4));
> smarty_block_table_foreach($this->_tag_stack[count($this->_tag_stack)-1][1],
> null, $this, $_block_repeat=true);while ($_block_repeat) { `ob_start()`; ?>
>
> LINE 11 - %%72^721^721E602F%%table2.tpl.php
> <?php $_block_content = `ob_get_contents()`; `ob_end_clean()`; echo
> smarty_block_table_foreach($this->_tag_stack[count($this->_tag_stack)-1][1],
> $_block_content, $this, $_block_repeat=false); }
> array_pop($this->_tag_stack); ?>
>
> Best regards
>
>

-- 
Give me your money at @ <http://pecl.php.net/wishlist.php/sniper>
Donating money may make me happier and friendlier for a limited period!
Death to all 4 letter abbreviations starting with P!

---

## #21258 — Holografix — 2005-12-16T19:02:07+00:00

URL: https://externals.io/message/21252#21258 · In reply to: #21253

Hi
I've been in IRC #smarty channel and this is what i've got:
<xxxx> you are using a dev-version off php on bother us with moronic 
userland bugs?
<xxxx> bye.

I just switch php versions from 5.1.1 to 5.1.2-dev and stop/start apache 
(windows). The php.ini and the extensions loaded are the same.
The script, the plugin and the template are the same too.
With php 5.1.1 I get the 16 images and no `E_STRICT` errors. With php 
5.1.2-dev i get a blank page and those 3 errors.
Could this be something like one problem that break foreach sometime ago?

Best regards



"Antony Dovgal" <antony@zend.com> escreveu na mensagem 
news:43A2FE35.1090609@zend.com...
> Please report this to smarty-dev@lists.php.net
>
> 
> > […]
>
>
> -- 
> Wbr, Antony Dovgal
