Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Reference Passing in PHP

Reference Passing in PHP

Avatar for Tamal Saha

Tamal Saha

March 05, 2017
Tweet

More Decks by Tamal Saha

Other Decks in Programming

Transcript

  1. Pass Scalar Types by Reference 5 5 <?php $instance =

    5; $assigned = $instance; $referenced =& $instance; $instance $assigned $referenced
  2. Pass Scalar Types by Reference 10 5 <?php $instance =

    5; $assigned = $instance; $referenced =& $instance; $instance = 10; $instance $assigned $referenced
  3. Pass Scalar Types by Reference null 5 <?php $instance =

    5; $assigned = $instance; $referenced =& $instance; $instance = 10; $instance = null; $instance $assigned $referenced
  4. Pass Scalar Types by Reference null 5 <?php $instance =

    5; $assigned = $instance; $referenced =& $instance; $instance = 10; $instance = null; echo '$instance = '; var_dump($instance); echo "\n", '$assigned = '; var_dump($assigned); echo "\n", '$referenced = '; var_dump($referenced); $instance $assigned $referenced
  5. Pass Objects by Reference obj-id obj-id <?php class SimpleClass {

    public $deviceToken = 'original'; } $instance = new SimpleClass(); $assigned = $instance; $referenced =& $instance; $instance $assigned $referenced deviceToken: original
  6. Pass Objects by Reference obj-id obj-id <?php class SimpleClass {

    public $deviceToken = 'original'; } $instance = new SimpleClass(); $assigned = $instance; $referenced =& $instance; $instance->deviceToken = 'modified'; $instance $assigned $referenced deviceToken: modified
  7. Pass Objects by Reference null obj-id <?php class SimpleClass {

    public $deviceToken = 'original'; } $instance = new SimpleClass(); $assigned = $instance; $referenced =& $instance; $instance->deviceToken = 'modified'; $instance = null; $instance $assigned $referenced deviceToken: modified
  8. Pass Objects by Reference null obj-id <?php class SimpleClass {

    public $deviceToken = 'original'; } $instance = new SimpleClass(); $assigned = $instance; $referenced =& $instance; $instance->deviceToken = 'modified'; $instance = null; echo '$instance = '; var_dump($instance); echo "\n", '$assigned = '; var_dump($assigned); echo "\n", '$referenced = '; var_dump($referenced); $instance $assigned $referenced deviceToken: modified
  9. Pass Array by Reference [0] = 1 [1] = 2

    [0] = 1 [1] = 2 <?php $instance = array(1, 2); $assigned = $instance; $referenced =& $instance; $instance $assigned $referenced
  10. Pass Array by Reference [0] = 6 [1] = 2

    [0] = 1 [1] = 2 <?php $instance = array(1, 2); $assigned = $instance; $referenced =& $instance; $instance[0] = 6; $instance $assigned $referenced
  11. Pass Array by Reference [0] = 6 [1] = 2

    [2] = 3 [0] = 1 [1] = 2 <?php $instance = array(1, 2); $assigned = $instance; $referenced =& $instance; $instance[0] = 6; array_push($instance, 3); $instance $assigned $referenced
  12. Pass Array by Reference null null null [0] = 1

    [1] = 2 <?php $instance = array(1, 2); $assigned = $instance; $referenced =& $instance; $instance[0] = 6; array_push($instance, 3); $instance = null; $instance $assigned $referenced
  13. Pass Array by Reference null null null [0] = 1

    [1] = 2 <?php $instance = array(1, 2); $assigned = $instance; $referenced =& $instance; $instance[0] = 6; array_push($instance, 3); $instance = null; $instance $assigned $referenced
  14. Pass Array by Reference null null null [0] = 1

    [1] = 2 <?php $instance = array(1, 2); $assigned = $instance; $referenced =& $instance; $instance[0] = 6; array_push($instance, 3); $instance = null; echo "\n", '$instance = '; var_dump($instance); echo "\n", '$assigned = '; var_dump($assigned); echo "\n", '$referenced = '; var_dump($referenced); $instance $assigned $referenced