[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: abstract static function
Rand
При следующем коде, должна вывалится E_STRICT ошибка:
<?php
error_reporting(E_ALL | E_STRICT);

abstract class Foo {
abstract static function bar();
/* Strict Standards: Static function foo::bar()
should not be abstract in filename on line n */

}
?>
http://php.net/manual/ru/migration52.incompatible.php.
И я точно помню, что на PHP 5.4 встречал эту ошибку в одном из исходников. Сейчас же, вроде бы тоже окружение (PHP 5.4.9, также пробовал на PHP 5.3.3), но не могу вызвать эту ошибку специально, пользы от этого, конечно, никакой, но если не найду как получить здесь E_STRICT, не засну, помогите ))
Invis1ble
хм, я даже не знал, что такой код вызовет E_STRICT...
проверил - php 5.4.0 - Strict standards: Static function Foo::bar() should not be abstract in ...

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

AlmazDelDiablo
PHP 5.4.17
Ошибки нет.

_____________
Блог | VK | GitHub | Twitch
Rand
Не, это включено, в общем пока не ясно, беглый осмотр php.ini ничего не дал. Не могли ведь они после 5.4.0 опять всё вернуть, как было в 5.1, тем более у меня под виндой на 5.3.3 тоже ошибки нет. Я уже стал припоминать, что возможно я встречал её не у себя, а на dev-сервере, надо будет завтра на работе проверить и детально изучить различия, если всё сойдется )) Другие strict ошибки показывает.
forza
-------REMOVED----

_____________
Заработок для веб-разработчиков: CodeCanyon
Мое Портфолио
Guest
5.3.26 есть ошибка. (Strict standards: Static function Foo::bar() should not be abstract in)
Жаль в мануале про это ничего не сказано. Почему нельзя.
Guest
Как вас легко поймать. Совсем толковых нет на этом форуме. laugh.gif
Абстрактным статический метод делать не верно, т.к. к нему можно обратиться через Foo::bar() и что оно будет вызывать то, если бы он был абстрактным?
Учитесь.
Игорь_Vasinsky
спасибо великий гуру.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
moskitos80
Цитата (Guest @ 21.08.2013 - 04:42)
5.3.26 есть ошибка. (Strict standards: Static function Foo::bar() should not be abstract in)
Жаль в мануале про это ничего не сказано.  Почему нельзя.

- Абстрактные статические методы не имеют смысла в контексте интерфейса.

_____________
Сложное - просто. Простое сложно.
Invis1ble
обычный болотный обитатель средней упитанности

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Guest
Цитата (Guest @ 21.08.2013 - 15:01)
Как вас легко поймать. Совсем толковых нет на этом форуме. laugh.gif
Абстрактным статический метод делать не верно, т.к. к нему можно обратиться через Foo::bar() и что оно будет вызывать то, если бы он был абстрактным?
Учитесь.

Fatal error: Cannot call abstract method,
что совершенно логично!
bestxp
да кстати на 5.6 сталкивался с этим на одном из окружений
если нужен абстрактный статический метод выноси его в интерфейс
SlavaFr
В java и C++ тоже нет абстрактных статических методов. Здесь имеется хорошее объяснение на английском, почему: https://coderanch.com/t/394249/java/Abstract-method-static

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.