Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
Every abstract method from any interface an object implements MUST be defined. We'll follow the documentation for Iterator and Countable to implement the required methods in the Collection class.
Let's take a look at that documentation.
0:00
The iterator interface
requires five methods.
0:16
Current, key, next, rewind, and valid.
0:20
The countable interface
requires a single count method.
0:30
Just like with our own interfaces,
PHP will also throw exceptions
0:34
if we try to implement a built in
interface without the required methods.
0:39
Since we are instantiating
our collection class,
0:44
let's try previewing our site again.
0:46
We see the error telling us which
methods need to be implemented.
0:51
So let's get to work.
0:55
For each public method we'll be creating,
0:57
we'll use a built-in function
on our collection array.
0:59
For the iterator method, each function
will be working with the array pointer.
1:02
The pointer saves
the position on an array.
1:07
For public function current(),
1:09
we're going to return current
1:15
($this->collection);.
1:21
This will return the current
pointer of the collection array.
1:27
We can duplicate this method for
other five methods.
1:31
For key, the function is called key().
1:41
This gives you the key of
the item the pointer is on.
1:49
For the method next,
The function call is next.
1:54
For the method rewind((),
The function call is actually reset.
2:07
This resets the pointer of
the array to the first item.
2:18
For the method valid(),
We're going to check the key
2:24
And see if it's not equal to null.
2:32
This will let us know if
the current key is valid.
2:36
For count(),
we'll us our common count function,
2:41
Which returns the number
of items in the array.
2:48
Before we give our new collection a try,
2:50
lets add a vardump that will
help us see what's going on.
2:52
In each of the iterator methods,
we're going to add var_dump(_ _ and
2:56
then the magic constant METHOD.
3:02
Rewind, next key and
3:10
current.
3:16
We're ready to give our
new collection a try.
3:19
So let's open index.php.
3:20
For our collection,
we need to prse in the $repo.
3:22
By default, this will pull all the posts.
3:29
Let's loop through each post and
return the title.
3:32
Foreach ($content as $item).
3:41
Echo $item-> title.
3:48
And let's check this out in the browser.
3:52
Let's view the source.
3:56
Let's increase this font size.
4:01
For the first pass,
we can see that it rewinds the pointer.
4:07
Then it checks that
the current item is valid.
4:12
If so, it returns the current item.
4:15
And this is where we get our title.
4:18
The following loops move
the pointer to the next item
4:21
before checking that the item is valid and
then returning current.
4:25
After the last item, the call to valid
will return false and the loop will end.
4:31
Great, now that we've seen what happens,
let's go back and
4:36
comment out those method dumps.
4:39
You need to sign up for Treehouse in order to download course files.
Sign up