Strict Standart и наследование стандартных объектов - ругается, почему??

Духовность™

Продвинутый новичок
PHP 5.3.3
Наследую Datetime
Нужно что бы мой класс-потомок My_Dattetime имел интерфейс, схожий с родителем. У родителя есть static метод createFromFormat, который возвращает инстанс Dattetime, а мне нужно My_Dattetime.

Решил переопределить createFromFormat:

PHP:
class My_Dattetime extends Datetime
{
	public static function createFromFormat($format, $time, DateTimeZone $timezone = null)
	{

	}
}
и получаю:
Strict standards: Declaration of My_Dattetime::createFromFormat() should be compatible with that of DateTime::createFromFormat() in D:\httpd\htdocs\localhost\www\phpinfo.php on line 13
Это баг или что это? Что я не так делаю? Почему он мне говорит, что декларация не такая??
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Это не баг. Это компилятор тебе намекает, что прозрачно заменить наследуемый класс ты не сможешь, потому что изменил декларацию метода предка.
Это не варнинг, если что. Просто bad practice.
Или выключи E_STRICT, или следуй классическим практикам в разработке.
 

Духовность™

Продвинутый новичок
изменил декларацию метода предка.
где я её изменил?

Просто bad practice.
Или выключи E_STRICT, или следуй классическим практикам в разработке.
Не понял. Почему это плохая практика? Я НЕ изменил декларацию - она идентична родной - http://www.php.net/manual/en/datetime.createfromformat.php
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Рефлексия показала, что дока врет :)
Твой класс
PHP:
Method [ <user, overwrites DateTime, prototype DateTime> static public method createFromFormat ] {
  @@ /var/www/cascade.localhost/public/class.php 7 - 10

  - Parameters [3] {
    Parameter #0 [ <required> $format ]
    Parameter #1 [ <required> $time ]
    Parameter #2 [ <optional> DateTimeZone or NULL $object = NULL ]
  }
}
Настоящий DateTime:
PHP:
Method [ <internal:date> static public method createFromFormat ] {

  - Parameters [3] {
    Parameter #0 [ <required> $format ]
    Parameter #1 [ <required> $time ]
    Parameter #2 [ <optional> $object ]
  }
}
Так что ты прав в своем негодовании %)
 

Духовность™

Продвинутый новичок
ОМГ
Спасибо, Флоппик! Я кстати вчера ночью вроде пробовал написать
PHP:
public static function createFromFormat($format, $time, $timezone = null)
и почему-то был уверен, что была та жа ошибка..
 
Сверху