Духовность™
Продвинутый новичок
Включил строгий контроль ошибок: E_ALL | E_STRICT
PHP Version 5.3.1
Мне совершенно не понятно почему php имеет как бы две стороны медали. С одной стороны можно писать так, а с другой - так писать нельзя. Вот примеры:
1.
2.
Ошибки в стиле "Only variables should be passed by reference" - тысяча их!
почему не в строгом режиме так МОЖНО? Почему подобные конструкции по дефолту не вываливают никаких ошибок? PHP поощряет невнимательность? Или как это называется?
3.
При E_STRICT:
PHP Version 5.3.1
Мне совершенно не понятно почему php имеет как бы две стороны медали. С одной стороны можно писать так, а с другой - так писать нельзя. Вот примеры:
1.
PHP:
// Метод родителя:
save(Base_Model $object)
// Наследника:
save(Module_Category_Model_Category $object)
- я что-то не понимаю. а как же полиморфизм? какой смысл в полиморфном методе, если мы не можем предопределить тип-хинт? Как это сточки зрения ООП - правильно или нет?trict Standards: Declaration of Module_Category_Mapper_Category::save() should be compatible with that of Module_Common_Mapper_Common::save()
2.
Ошибки в стиле "Only variables should be passed by reference" - тысяча их!
PHP:
..
print_r($params); // Array( [ajax] => AdvertEmail, [id] => 1773)
list($a, $b) = each(foo($params)); // each принимает ссылку на массив, так нельзя
3.
PHP:
class My_Datetime extends DateTime
{
/**
* @see parent::createFromFormat()
*/
public static function createFromFormat($format, $time, DateTimeZone $timezone = null)
{
// ....
- что я не так тут делаю?Strict Standards: Declaration of My_Datetime::createFromFormat() should be compatible with that of DateTime::createFromFormat() in Z:\home\....\Type\Datetime.php on line 45