The PHP team has released version today, which includes support for generators . Reading, I saw that it does precisely what it can do with an array. PHP team generator example : Result : but I can Using the array is the same thing and I can still keep up with previous versions of PHP. Take a look : So the question is : What is the purpose of the existence of this new facility? I need to play all the examples of documentation without using the new feature. Can someone give a good explanation and perhaps an example which is not necessarily impossible with the older versions, but can the use of generators help in development? There is a difference in the case of efficiency For example, in many languages other than PHP, two Now it's actually straight forward. However, for the large range, there is a large amount of memory in it if we try to run it with But if we used a generator: Now we use continuous memory, yet there is still an "array" (like structure), which we can iterate in one place (and other iterators Can use with). This does not replace an array , but it provides an efficient way to avoid the need for memory ... But even more Saving is the generation of items Since each result is prepared as needed, you can delay execution (fetching or computing) of each element until you need it. For example, if you need to fetch one item from one row and make some complex processing in each line, then you can delay with that generator until you actually need that line: So if you only need the first 3 results, then you will only process the first three records For more information, The subject was written on.
// only PHP 5.5 function gen_one_to_three () {for ($ i = 1; $ i & lt; = 3; $ i ++) {// Note that $ I is protected between yields yields $ i; }} $ Generator = gen_one_to_three (); Forex currency ($ generator as $ value) {resonant "$ value \ n"; }
1 2 3
// Compatible with 4.4.9! Function gen_one_to_three () {$ results = array (); For ($ i = 1; $ i & lt; = 3; $ i ++) {$ Result [] = $ i; } Returns $ results; } $ Generator = gen_one_to_three (); Forex currency ($ generator as $ value) {resonant "$ value \ n"; }
Category function,
category () and
xrange () are included. This is a very good example of the generator and why use them. Let's build your own:
function range ($ start, $ end) {$ array = array}; For $ {$ array = $ start; $ i & lt; = $ end; $ i ++} {$ array [] = $ i; } $ Array returned; }
$ start = 0 and
$ end = 100000000 Exit memory!
function xrange ($ start, $ end) {for ($ i = $ start; $ i & lt; = $ End; $ i ++) {yield $ i; }}
function fetchFromDb ($ result) {while ($ row = $ result-> fetchArray ()) {$ record = doSomeComplexProcessing ($ line); Produce $ record; }}
No comments:
Post a Comment