On December 12, 2017 8:51:42 AM GMT+01:00, Stanislav Malyshev <smalys...@gmail.com> wrote: >Hi! > >> The issue, as you well know, is that references disable >copy-on-write. Thus assume you have code like this: >> >> function with_ref(&$a) { >> count ($a); >> } >> >> function no_ref($a) { >> count($a); >> } >> >> The count in with_ref() will copy the array, while no_ref() can use >copy on write and won't actually copy. > >Yes, this is an issue, and it'd be good to find a way to solve it. At >least for count() and other "pure" (however pure can it be in PHP) >functions it seems possible. But do not think "not using references >ever" qualifies as a solution :)
For this case there is a good solution: Let the engine be smart and pass by value :-D And yes there are a few cases where references might be better: Graph like structures (while I'd claim objects are nicer, but that's subjective), capturing by-ref in closures (`use` clause, while many times an object to hold state can be, subjectively, better, but sometimes you just need a counter or such) and returning error codes by-ref (if objects or exceptions aren't better, this most often is more low-level stuff, i.e. in json_decode() I'd see benefits over json_error_last()) Some years back I spent quite some time with different cases almost always removing the references gave faster and clearer code (while this proposal to add & to the call sign takes away some wtf) not only in my opinion, but also the respective maintainers. Of course with PHP 7 the maths changed a bit, but fundamentally I stand by my opinion. johannes -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php