there is a Date class in php. So my guess is you are instantiating the wrong Date class.
Change the name of the Date class in Card.php to say myDate;
Then try again $this->date = new myDate;
See how that works.
Create a separate file to test with to remove any other stuff that may be causing confusion
DC
Ignoring charles unnecessary downvote
Another way to test this is to go into Card.php and add or ammend the constructor for Date
function __construct() {
echo "created date object\n";
}
This will then print when you are creating the date object if it doesnt print then you know you are instantiating a different Date object.
Another method I often use is
$this->date = new Date;
var_dump($this->date);
If it shows a differnt class structure then you are expecting then again you have the wrong Date object
If not then look to see if $this->date is not redefined anywhere
e.g.
$this->date = new Date;
....
$this->date = new DateTime;
DC