How to cache Methods for one process?

I’m trying to cache an Object’s method, so every time I call the Class and the method, it won’t process again after first time.

Here is what I’m trying to achieve,

class App {
    public $data = null;

    public function print() {
        if ( $this->data === null ) {
            $this->data = "First time.";
        }
        else {
            $this->data = "After first time.";
        }
        return $this->data;
    }
}

$data = new App();
echo $data->print() . "<br>";
echo $data->print() . "<br>";

$data2 = new App();
echo $data2->print() . "<br>";
echo $data2->print() . "<br>";

Result

First time.
After first time.
First time.
After first time.

As you can see, it’s processing the print() method again when I call it again in $data2.

Is it possible to cache so result will be

First time.
After first time.
After first time.
After first time.