Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Reference Passing in PHP
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tamal Saha
March 05, 2017
Programming
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Reference Passing in PHP
Tamal Saha
March 05, 2017
More Decks by Tamal Saha
See All by Tamal Saha
Kubernetes application packaging from first principles
tamalsaha
0
8.2k
OverHelmed: Experience of a Helm chart publisher and consumer
tamalsaha
2
1.8k
Other Decks in Programming
See All in Programming
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
400
1B+ /day規模のログを管理する技術
broadleaf
0
100
Vite+ Unified Toolchain for the Web
naokihaba
0
330
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
170
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
130
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.4k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
730
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.7k
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
130
Inside Stream API
skrb
1
750
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
14
5.7k
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
180
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Crafting Experiences
bethany
1
190
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Balancing Empowerment & Direction
lara
6
1.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
260
Navigating Weather and Climate Data
rabernat
0
230
A Soul's Torment
seathinner
6
3k
How to build a perfect <img>
jonoalderson
1
5.7k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
170
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Transcript
Reference Passing in PHP Tamal Saha
Pass Scalar Types by Reference
Pass Scalar Types by Reference 5 5 <?php $instance =
5; $assigned = $instance; $referenced =& $instance; $instance $assigned $referenced
Pass Scalar Types by Reference 10 5 <?php $instance =
5; $assigned = $instance; $referenced =& $instance; $instance = 10; $instance $assigned $referenced
Pass Scalar Types by Reference null 5 <?php $instance =
5; $assigned = $instance; $referenced =& $instance; $instance = 10; $instance = null; $instance $assigned $referenced
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
Pass Objects by Reference
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
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
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
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
Pass Array by Reference
Pass Array by Reference [0] = 1 [1] = 2
[0] = 1 [1] = 2 <?php $instance = array(1, 2); $assigned = $instance; $referenced =& $instance; $instance $assigned $referenced
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
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
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
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
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