Declare variable $data as global inside the constructor: 
 function __construct() {
       global $c;
       global $data;
       $data = array("name"=>$c['name'],
                     "family"=>$c['family']);
 }
Then, it will be visible in other function as well. 
Note that extensive usage of global variables is strongly discouraged, consider redesigning your class to use class variables with getters+setters. 
A more proper way would be to use
class testObject
{
     private $data;
     function __construct(array $c) 
     {
         $this->data = array(
             "name"=>$c['name'],
             "family"=>$c['family']
         );
     }
     function showInfo() 
     {
         print_r($this->data);
     }
     // getter: if you need to access data from outside this class
     function getData() 
     {
         return $this->data;
     }
}
Also, consider separating data fields into separate class variables, as follows. Then you have a typical, clean data class. 
class testObject
{
     private $name;
     private $family;
     function __construct($name, $family) 
     {
         $this->name = $name;
         $this->family = $family;
     }
     function showInfo() 
     {
         print("name: " . $this->name . ", family: " . $this->family);
     }
     // getters
     function getName() 
     {
         return $this->name;
     }
     function getFamily() 
     {
         return $this->family;
     }
}
And you can even construct this object with data from you global variable $c until you elimitate it from your code: 
new testObject($c['name'], $c['family'])