Можно ли в PHP реализовать строгую проверку типа для объектов? Т.е. как проще и удобнее всего проверить, что, скажем, в метод в качестве параметра был передан объект заданного типа (а не какого-либо другого) и можно ли это вообще сделать? OFF: давно не работал с PHP, после стройных C++/C# со строгой типизацией излишняя свобода в приведении типов в PHP настораживает 8)
Спасибо! Type Hinting в доках; нашел =) Кстати, получается, что указать method(MyClass[] $param) нельзя?
нельзя. Вообще такой хинтинг поддерживается только для array, класса или интерфейса Т.е. method(int $param) бессмысленнен
Костян Почему не нужен? Если я ожидаю, что мне дадут, например, массив, то я должен проверить переменную функцией is_array. Иначе скрипт полетит в самый неподходящий момент. =)) Кстати, надо проверить что быстрее: Код (Text): method (class $var){ $var->method2(); return 1; } или Код (Text): method ($var){ if ($var instanceof MyClass){ $var->method2(); return 1; } } Понятное дело, что примеры имеют немного разную функциональность. Вопрос в скорости.
Volt(220), если вам важны вопросы скорости базовых конструкций языка, вам туда же, куда и тем кому важна строгая типизация.
Volt(220) конечно же можно ставить где то, если уж очень очень сильно надо, но вот делать это с int это вообще маразм
Маразм ? PHP: function sql_delete($id) { $id = intval($id); // вот это маразм ... } Но приходится, потому что по другому пока никак, хорошо что с классами сделали хоть.
А что, в С++ когда с TextBox текст получаете, не приводите его к нужному числовому типу и только тогда работаете с ним? Или он у вас с текстовой строки сам становится double, прям вот так, без всех преобразований?
Diem Это совсем другое, не надо путать цветы с мороженным. SQL запрос обычно является строкой, так что ваш пример вообще не в тему.
Вот если бы можно было написать: PHP: function f(int x) { ... } f('123xx'); И пых сам приводил аргумент к инту, в этом был бы смысл.
Ну не мне тебе объяснять, что это языки совсем разного уровня. С++ - это тяжеленный монстр, который умеет всё и, конечно, он гораздо менее удобен и лёгок.
Не хочу спорить с тобой. Под каждые задачи подходят свои средства. Не думаю, что тебе придёт в голову программировать, скажем, микроконтроллеры на пхп или чём-нибудь подобном.
Michael Шозатипизацияобъектов? Зачем вам PHP, если нужна типизация? Отсутствие типизации - это не баг а фича, ею пользоваться надо и писать код сотвествующий. В пыхе объкт это отдельный тип, если не заметил, а не универсальный тип для любой переменной. Upd'ed