php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #49188 DateTime::__construct should allow a DateTime-object to be passed as argument
Submitted: 2009-08-07 08:18 UTC Modified: 2017-01-11 17:17 UTC
Votes:7
Avg. Score:3.6 ± 1.7
Reproduced:5 of 6 (83.3%)
Same Version:2 (40.0%)
Same OS:2 (40.0%)
From: niklas at narhinen dot net Assigned:
Status: Not a bug Package: Date/time related
PHP Version: 5.2.10 OS:
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: niklas at narhinen dot net
New email:
PHP Version: OS:

 

 [2009-08-07 08:18 UTC] niklas at narhinen dot net
Description:
------------
DateTime::__construct should allow a DateTime object to be passed as parameter to emulate good object desing (Copy constructor).

This wouldn't break anything.

Reproduce code:
---------------
<?php
date_default_timezone_set('Europe/Helsinki');

class MyClass
{
	private $myDateTime;
	public function setTime($datetime = null) { $this->myDateTime = new DateTime($datetime); }
	public function getTime($format = "Y-m-d") { return $this->myDateTime->format($format); }
}

$class = new MyClass();
$class->setTime("7.8.2009");
var_dump($class->getTime());
$class->setTime(null);
var_dump($class->getTime());
$dt = new DateTime('15.5.2005');
$class->setTime($dt);
var_dump($class->getTime());
?>

Expected result:
----------------
string(10) "2009-08-07"
string(10) "2009-08-07"
string(10) "2005-05-15"

Actual result:
--------------
string(10) "2009-08-07"
string(10) "2009-08-07"
PHP Fatal error:  Uncaught exception 'Exception' with message 'DateTime::__construct() expects parameter 1 to be string, object gi
ven' in D:\temp\php\datetime.php:7
Stack trace:
#0 D:\temp\php\datetime.php(7): DateTime->__construct(Object(DateTime))
#1 D:\temp\php\datetime.php(17): MyClass->setTime(Object(DateTime))
#2 {main}
  thrown in D:\temp\php\datetime.php on line 7

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2010-11-24 15:15 UTC] jani@php.net
-Package: Feature/Change Request +Package: Date/time related
 [2012-12-04 20:16 UTC] will dot sskates at ntlworld dot com
You can pass the time string instead. What is the use case for this?
 [2016-06-20 16:12 UTC] cmb@php.net
> DateTime::__construct should allow a DateTime object to be
> passed as parameter to emulate good object desing (Copy
> constructor).

PHP has `clone` for this purpose. In my opinion, that's pretty
fine.
 [2017-01-11 17:17 UTC] heiglandreas@php.net
-Status: Open +Status: Not a bug
 [2017-01-11 17:17 UTC] heiglandreas@php.net
As this issue is by now over 7 years old, targets an unsupported version of PHP and can be circumvented in several ways I'm closing this.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Oct 18 02:01:27 2024 UTC