Play it when you are bored.
Traversing an object is actually just traversing a specific array type attribute in the object.
After PHP5, you can directly foreach, but the private members of the class cannot be accessed.
The object-oriented principle also does not allow class members to be directly accessed from the outside.
- /*
- * @class Sample
- * @remark The traversal object is actually just an array in the variable object; to enable the object to be traversed, the iterator interface needs to be implemented
- */
- class Sample implements iterator
- {
- private $v1 = '123';
- private $v2 = 'abc';
- private $v3 = array( 1, 2, 3 );
- public function rewind()
- {
- / *
- * get_object_vars Check the manual for this function to see its functions
- * Here, the Sample object implements the defined attributes instead of the dynamically generated attributes $data into an array,
- * Assign the group to $data
- * /
- $this->data = get_object_vars ( $this );
-
- /*
- * Point the cursor in the iterator interface to the first element of $data
- */
- reset( $this->data );
- }
-
- public function current() { return current( $this->data ); }
-
- public function key() { return key( $this->data ); }
-
- public function next() { return next( $this->data ); }
-
- public function valid() { return ( $this->current() !== false ); }
-
- }
-
- $s = new Sample();
-
- foreach( $s as $k=>$v ){ echo $k.'='.$v.'
';}
Copy code
|