Bonjour,
je me bats avec ce message d'erreur :Voici comment est construit cet objet : je reçois une date ayant ce format : yyyy-mm-dd. Comme je veux vérifier le format de la date, j'ai crée pour cela une classe DateTimeCtrl qui hérite de la classe DateTime et à laquelle j'ai rajouté une méthode isValid :Warning: DateTime::format(): The DateTime object has not been correctly initialized by its constructor in C:\wamp64\www\ticket2\Classes\Olivier\Ticket.php on line 96
Cette variable est ensuite transmise à une autre classe ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php declare(strict_types=1); namespace Classes\Olivier; use DateTime; class DateTimeCtrl extends DateTime { private $date; // Datetime and format : yyyy-mm-dd /* Constructor */ public function __construct($date) { $this->date=$date; } public function isValid():bool { function validateDate($date_to_control, $date, $format = 'Y-m-d') { $date_good_format = DateTime::createFromFormat('Y-m-d', $date_to_control); return $date_good_format->format($format) == $date; } $ctrl_date=new DateTime($this->date); return (!empty($this->date)&&validateDate($this->date,$ctrl_date)); } //end of isValid } //end class DatetimeCtrl
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $submitted_date = new DateTimeCtrl('2018-12-26'); echo "valid_date:".($submitted_date->isValid())?TRUE:FALSE."<br/>"; $last_resolved_date = new DateTime('2019-01-17'); $tic1=new Ticket(1,'Phenix','PHENIX_WW_L3',$submitted_date,$last_resolved_date,'AR // Florida // Phenix // User unable to complete...',$priori1,$status1,$country2,$user1,$user2,$orga1,$inc_typ1,$rep_source1); $tic1->getAllData();
La méthode getAllData de Ticket fait appel à une autre méthode de Ticket : self::getSubmittedDateValue :
et le message d'erreur de ci-dessus porte sur la ligne 4 de cette méthode. Quelle peut être la raison ?
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public function getSubmittedDateValue():string { return(($this->submitted_date)->format('Y-m-d')); }
A noter que je n'ai pas d'erreur si dans mon code, je remets le type DateTime à la place de DateTimeCtrl.
Constructeur de Ticket :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public function __construct(int $id,string $prd_name,string $assigned_grp,DateTimeCtrl $subm_date,Datetime $lr_date,string $summary, Priority $priority,Status $status,Country $country,User $submitter,User $customer,Organization $orga,IncidentType $inc_type, ReportedSource $rep_source) { $this->id=$id; $this->product_name=$prd_name; $this->assigned_group=$assigned_grp; $this->submitted_date=$subm_date; $this->last_resolved_date=$lr_date; $this->summary=$summary; $this->priority=$priority; $this->status=$status; $this->country=$country; $this->submitter=$submitter; $this->customer=$customer; $this->organization=$orga; $this->incident_type=$inc_type; $this->reported_source=$rep_source; }
Partager