序列化和反序列化函数

I know serialization is the process of taking a complicated object and reducing it down to zeros and ones for either storage or transmission. But I'm confused about the interface Serializable For example, we have colde like

class Artist implements Serializable {

 public function serialize() {
 return serialize(
 array("earliest" =>self::$earliestDate,
 "first" => $this->firstName,
 "last" => $this->lastName,
 "bdate" => $this->birthDate,
 "ddate" => $this->deathDate,
 "bcity" => $this->birthCity,
 "works" => $this->artworks
 );
 );
 }
 public function unserialize($data) {
 $data = unserialize($data);
 self::$earliestDate = $data['earliest'];
 $this->firstName = $data['first'];
 $this->lastName = $data['last'];
 $this->birthDate = $data['bdate'];
 $this->deathDate = $data['ddate'];
 $this->birthCity = $data['bcity'];
 $this->artworks = $data['works'];
 }
 //...
}

For example, unserialize($data)is the method that we implements, but how come it call itself inside the function like "$data = unserialize($data)",isn't it a infinite loop? Is the inside function unserialize($data) the same one as outside unserialize($data) function?