Req #49188 [Opn->Nab]: DateTime::__construct should allow a DateTime-object to be passed as argument
| From: | heiglandreas@php.net | Date: | Wed, 11 Jan 2017 17:17:58 +0000 |
| Subject: | Req #49188 [Opn->Nab]: DateTime::__construct should allow a DateTime-object to be passed as argument | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-206530@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=49188&edit=1
ID: 49188
Updated by: heiglandreas@php.net
Reported by: niklas at narhinen dot net
Summary: DateTime::__construct should allow a DateTime-object
to be passed as argument
-Status: Open
+Status: Not a bug
Type: Feature/Change Request
Package: Date/time related
PHP Version: 5.2.10
Block user comment: N
Private report: N
New Comment:
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.
Previous Comments:
------------------------------------------------------------------------
[2016-06-20 16:12:49] 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.
------------------------------------------------------------------------
[2012-12-04 20:16:31] will dot sskates at ntlworld dot com
You can pass the time string instead. What is the use case for this?
------------------------------------------------------------------------
[2009-08-07 08:18:54] 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
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=49188&edit=1