Since objects are passed by reference by default now, is there maybe some special case when &$obj would make sense?
Is there ever a need to use ampersand in front of an object?
3.5k views Asked by LDusan At
2
There are 2 answers
0
Nilesh Yadav
On
There are situations where you add & in front of function name, to return any value as a reference.
To call those function we need to add & in front of object.
If we add & in front of object, then it will return value as reference otherwise it will only return a copy of that variable.
class Fruit() {
protected $intOrderNum = 10;
public function &getOrderNum() {
return $this->intOrderNum;
}
}
class Fruitbox() {
public function TestFruit() {
$objFruit = new Fruit();
echo "Check fruit order num : " . $objFruit->getOrderNum(); // 10
$intOrderNumber = $objFruit->getOrderNum();
$intOrderNumber++;
echo "Check fruit order num : " . $objFruit->getOrderNum(); // 10
$intOrderNumber = &$objFruit->getOrderNum();
$intOrderNumber++;
echo "Check fruit order num : " . $objFruit->getOrderNum(); // 11
}
}
Related Questions in PHP
- php Variable name must change in for loop
- register_shutdown_function is not getting called
- Query returning zero rows despite entries existing
- Retrieving *number* pages by page id
- Automatically closing tags in form input?
- How to resize images with PHP PARSE SDK
- how to send email from localhost using codeigniter?
- Mariadb max Error while sending QUERY packet PID
- Multiusers login redirect different page in php
- Imaginary folder when I use "DirectoryIterator" in PHP?
- CodeIgniter + XDebug: debug only working in the main controller, index() function
- PHP script timeout when I use sleep()
- posting javascript populated form to another php page
- AJAX PHP - Reload div after submit
- PHP : How can I check Array in array?
Related Questions in OOP
- Access objects variable & method by name
- Why does compiler recognize while(true) at compile time but not if(true)
- Pass variables to extended class
- Cast a superclass type to a subclass type?
- Understanding difference in Swift properties for structs and classes in assignment
- Does exist any way to force child class to have at least one field with a specified attribute?
- Symfony : is it better to use a trait or an intermediary class to complete Controller one?
- (Java) What kind of argument is this? With a
- C++ Implementing a Queue of cars in OOP
- Inheritance in openERP (odoo)
- missing 1 required positional argument: 'key'
- how can Object class in ruby be an instance of it's subclass, class "Class"
- How to force others to obey a specific layout for a child class?
- Class variables in OOP
- define_method in a class method
Related Questions in OBJECT
- Getting Value from Object with Characters in Element Name
- Java: set and get methods for strings
- Angular populate select with object of objects
- Is it possible to have a command last only while the object is moving?
- Converting an unknown to an array in PHP
- Can anyone explain why this snippet of code is working in the constructor only?
- How to initialize an object with an array parameter in Java
- How can I assign initial data to some variables in literal object before use
- Check if a private function exists inside an object in JavaScript
- java.lang.ArrayIndexOutOfBoundsException object array
- Jquery object is undefined after sort but is in firebug
- Using NON static class Methods Without reference
- JSON-like object in Python
- Change value of each property in array of objects in javascript - map() method?
- Does Object.defineProperty has access the memory address of object?
Related Questions in REFERENCE
- Objective-C Reference to object that implements protocol
- Wrong Theme being applied to PreferenceActivity with xml reference
- what is the <% in the php files and how it should compile?
- C++ assign const reference to instance variable (memory issues?)
- reference data class member visitor pattern
- Using NON static class Methods Without reference
- Breaking reference to object in Python
- Reference as a only class member gives size 8 for integer
- How can I tell PHPStorm to find references to rewritten URLS?
- Why is this method called instead of the other?
- Where is the MVEL Language Reference found?
- Assign a reference return value to a non-reference variable
- Why can a raw type reference refer to a generic instance?
- C++ - Why does 2 local references to the same object stay in sync?
- how to use namespace of external project?
Related Questions in PHP-INTERNALS
- Understanding zend_execute APIs
- How to declare anonymous function write in C for PHP extension?
- php 5.6.1 build configuration error.
- Do unused use statements decrease performance?
- error: 'execute_data' undeclared #define EX(element) ((execute_data)->element) in php 7.0
- How can I make/patch php source (c code) to read an array from php.ini?
- How do I compile a PHP extension with Microsoft Visual C++ 2008?
- PHP uksort function using global variable fails after PHP upgrade to 5.3.3
- how to read a constant property in php extension?
- PHP Sessions not stored
- What are the limits on session names in PHP?
- What is #<some-number> next to object(someClass) in var_dump of an object? I have an inference. Am I right?
- How to overload functions from a PHP extension?
- Extending PHP syntax with extensions?
- Is there ever a need to use ampersand in front of an object?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Objects use a different reference mechanism.
&$objectis more a reference of a reference. You can't really compare them both. See Objects and references:&$objectis something else than$object. I'll give you an example:I won't answer the question if it makes sense, or if there is a need. These are opinion based questions. You can definitely live without the
&reference on objects, as you could without objects at all. The existence of two mechanisms is a consequence of PHP's backward compatibility.