← Back to team overview

mahara-contributors team mailing list archive

[Bug 1620416] [NEW] Use of assign_by_ref() is not clear as to what is required

 

Public bug reported:

In Mahara we have a bunch of $smarty->assign_by_ref('item', $variable);

It was originally added to smarty/dwoo due to the following

"The assign_by_ref() original intention in Smarty 2 was to work around
the object-by-copy behavior of PHP4."

"The _by_ref methods have been introduced in Smarty2 mainly to be able
to pass objects to the templates in PHP4. In PHP5 these are passed alway
as a reference."

But it doesn't look like we use them in a true reference sort of way

What I mean is, this example shows referenced vs not referenced 'title'
variable:

$smarty = smarty();
$title = 'cats';
$smarty->assign('title', $title);
$smarty->assign_by_ref('titleref', $title);
$title = 'dogs';
$smarty->display('template.tpl'); 

In the template it will display 'cat' as title and 'dogs' as titleref
rather than 'cat'.

We don't support PHP4 and so should clean up the code and make the
assign_by_ref() calls simply assign() where appropriate to make the code
clear as to what we are wanting.

** Affects: mahara
     Importance: Low
         Status: New

** Changed in: mahara
    Milestone: None => 16.10.0

-- 
You received this bug notification because you are a member of Mahara
Contributors, which is subscribed to Mahara.
Matching subscriptions: Subscription for all Mahara Contributors -- please ask on #mahara-dev or mahara.org forum before editing or unsubscribing it!
https://bugs.launchpad.net/bugs/1620416

Title:
  Use of assign_by_ref() is not clear as to what is required

Status in Mahara:
  New

Bug description:
  In Mahara we have a bunch of $smarty->assign_by_ref('item',
  $variable);

  It was originally added to smarty/dwoo due to the following

  "The assign_by_ref() original intention in Smarty 2 was to work around
  the object-by-copy behavior of PHP4."

  "The _by_ref methods have been introduced in Smarty2 mainly to be able
  to pass objects to the templates in PHP4. In PHP5 these are passed
  alway as a reference."

  But it doesn't look like we use them in a true reference sort of way

  What I mean is, this example shows referenced vs not referenced
  'title' variable:

  $smarty = smarty();
  $title = 'cats';
  $smarty->assign('title', $title);
  $smarty->assign_by_ref('titleref', $title);
  $title = 'dogs';
  $smarty->display('template.tpl'); 

  In the template it will display 'cat' as title and 'dogs' as titleref
  rather than 'cat'.

  We don't support PHP4 and so should clean up the code and make the
  assign_by_ref() calls simply assign() where appropriate to make the
  code clear as to what we are wanting.

To manage notifications about this bug go to:
https://bugs.launchpad.net/mahara/+bug/1620416/+subscriptions


Follow ups