They way you have it now, if you call:
$d = new hello();
$d->say();
Nothing happens because say() simply returns the value... you need to echo or print that value out as follows:
$d = new hello();
echo $d->say();
But this will only output that comma you have assigned to $name. The values of $this->fname and $this->lname have not been populated so there is nothing in them to return.
But wait, you might say... I have that method attrib() in there, shouldn't that populate those variables? The answer is yes, but you have to call it. So using your example the following would get you what you want:
$d = new hello(); //instantiates the class
$d->attrib(); //calls attrib() thus assigning those values
echo $d->say(); //echos out the values returned by say()
Most importantly, however, is that fact that this isn't really the best way to do something like this. The answers provided by Paolo and jonstjohn show you the best way to handle this and Paolo's is the most flexible as you can change the values of first and last name each time.