Уважаемый, мне бы не хотелось здесь общаться на тему могу ли я нагуглить эту функцию или сам написать, нужна ли такая функция в реальных проектах или нет. Просто, если у вас есть на вооружении какая-то красивая функция, или вам не сложно ее написать за меня, поделитесь, пож-та. Очень надеюсь на понимание, спасибо.
siv1987: Ошибки не должны быть там где по идее не должны быть. Должна же быть хоть какая-то типизация. Если проверять каждый раз переменную перед обработкой какой-то функцией то накладные расходы будут слишком больше. А таких ситуации когда переменная может быть и массив, и объект, и хз что там не должно быть, либо следует избегать.
Это понятно. Придерживаюсь тех же принципов, но все же....
Я задал этот вопрос, потому что, как сказал один из участников, нагуглить ничего не получилось. Все с умным видом предлагают свои гениальные функции, но они не работаю. Благодарю за участие.
---------- Добавлено 07.06.2013 в 19:38 ----------
siv1987: Варианты в этой теме озвучены, причем несколько.
siv1987: Бугага, если ваша переменная содержит new some_object(); там, где она должна содержать строку (или integer), то стоит серьезна задуматься о логике его работы.
is_numeric или is_integer, остальное либо надуманно, либо тогда криворуко написано.
Благодарю за ответ, но я отлавливаю ошибки. Если вы считаете, что ошибки всегда предсказуемы, то это наивно.
Суть не в этом. Вопрос вот в чем: как можно проверить переменную на предмет того, что она содержит целое положительное число или строку содержащую такое число, например '1' или '154'. В строке не должно быть лишних символов.
Предложите, пож-та, свой вариант, если вы такой умный, бугага.
---------- Добавлено 07.06.2013 в 19:34 ----------
Милованов Ю.С: Даже если не в состоянии нагуглить, то догадаться написать свою функцию....
function myCheckDigit($num)
{
preg_match('/[^0-9]+/', $num, $matches);
if (count($matches))
{
return FALSE;
}
return TRUE;
}
Дом. задание: доработать функцию, чтобы работала с дробными и отрицательными числами. Хотя если у Вас айдишники дробные/отрицательные.....
Благодарю и вас за ответ, но из всех предложенных здесь и в соседней ветке проверок, ваша не проходит по самому большому числу вариантов, даже если в нее банально послать 0.
Твоя проверка даст положительный результат в случае:
1. $var = new some_class();
2. $var = true;
Коллеги, необходима красивая проверка, которая проверяет переменную на предмет того, является ли она положительным целым числом или (добавлю) строкой, которая содержит такое число, например '1' или '132' и т.д.
Айдишники ведь, практически при каждом $_POST передаются. Гарантировано встречаетесь с необходимостью проверить id. Так как проверяете?
---------- Добавлено 07.06.2013 в 18:53 ----------
Уважаемые, создам наверное еще одну тему, исключительно под эту задачу. Читал сейчас в инете, одну фигню пишут. Проверку так никто и не сделал. Надеюсь админы не будут против.
for93t: Публичное свойство по определению нельзя защитить от прямых изменений - на то оно и публичное, что каждый может его читать и изменять.
Ок. Переформулирую вопрос. Есть ли возможность создать свойство в объекте, которое будет доступно для чтения из вне, но не доступно для изменения из вне?
---------- Добавлено 07.06.2013 в 13:14 ----------
Коллеги, скажите, пож-та, это нормально, если доступ к свойствам объекта не предоставлять, а возвращать их значения только через методы объекта?
Точно? var_dump(myCheckDigit('0')); => bool(true)
Точно! var_dump(myCheckDigit(0)); => bool(false)
Уважаемый, мне бы не хотелось здесь общаться на тему могу ли я нагуглить эту функцию или сам написать, нужна ли такая функция в реальных проектах или нет. Просто, если у вас есть на вооружении какая-то красивая функция, или вам не сложно ее написать за меня, поделитесь, пож-та. Очень надеюсь на понимание, спасибо.
Ошибки не должны быть там где по идее не должны быть. Должна же быть хоть какая-то типизация. Если проверять каждый раз переменную перед обработкой какой-то функцией то накладные расходы будут слишком больше. А таких ситуации когда переменная может быть и массив, и объект, и хз что там не должно быть, либо следует избегать.
Это понятно. Придерживаюсь тех же принципов, но все же....
Я задал этот вопрос, потому что, как сказал один из участников, нагуглить ничего не получилось. Все с умным видом предлагают свои гениальные функции, но они не работаю. Благодарю за участие.
---------- Добавлено 07.06.2013 в 19:38 ----------
Варианты в этой теме озвучены, причем несколько.
Не могли бы показать, какие это варианты?
Бугага, если ваша переменная содержит new some_object(); там, где она должна содержать строку (или integer), то стоит серьезна задуматься о логике его работы.
is_numeric или is_integer, остальное либо надуманно, либо тогда криворуко написано.
Благодарю за ответ, но я отлавливаю ошибки. Если вы считаете, что ошибки всегда предсказуемы, то это наивно.
Суть не в этом. Вопрос вот в чем: как можно проверить переменную на предмет того, что она содержит целое положительное число или строку содержащую такое число, например '1' или '154'. В строке не должно быть лишних символов.
Предложите, пож-та, свой вариант, если вы такой умный, бугага.
---------- Добавлено 07.06.2013 в 19:34 ----------
Даже если не в состоянии нагуглить, то догадаться написать свою функцию....
Дом. задание: доработать функцию, чтобы работала с дробными и отрицательными числами. Хотя если у Вас айдишники дробные/отрицательные.....
Благодарю и вас за ответ, но из всех предложенных здесь и в соседней ветке проверок, ваша не проходит по самому большому числу вариантов, даже если в нее банально послать 0.
ctype_digit($var) || is_num($var)
Твоя проверка выдаст фатальную ошибку если $var = -12;
---------- Добавлено 07.06.2013 в 19:18 ----------
ctype_digit($var) || is_num($var) или ещё короче ctype_digit((string)$var)
Вторая проверка выдаст фатальную ошибку, если $var = new some_object();
Еще предложения.
kiowas, господи.
(int) $var == $var && $var > 0
Твоя проверка даст положительный результат в случае:
1. $var = new some_class();
2. $var = true;
Коллеги, необходима красивая проверка, которая проверяет переменную на предмет того, является ли она положительным целым числом или (добавлю) строкой, которая содержит такое число, например '1' или '132' и т.д.
Айдишники ведь, практически при каждом $_POST передаются. Гарантировано встречаетесь с необходимостью проверить id. Так как проверяете?
---------- Добавлено 07.06.2013 в 18:53 ----------
Уважаемые, создам наверное еще одну тему, исключительно под эту задачу. Читал сейчас в инете, одну фигню пишут. Проверку так никто и не сделал. Надеюсь админы не будут против.
kiowas, дословно так - (int) $var > 0, реально - зависит от конкретной задачи.
Твоя проверка пройдет, если:
1. $var = 2.3
2. $var = new some_class();
3. $var = array('asdfa');
4. $var = true;
Коллеги, пож-та, напишите красивый метод проверки переменной на предмет того, является ли она целым положительным числом.
---------- Добавлено 07.06.2013 в 18:16 ----------
Да. Вам еще очень многое предстоит узнать ;)
---------- Добавлено 07.06.2013 в 17:56 ----------
Твоя проверка выдаст ошибку, если:
1. $var = new some_object()
2. $var = array();
Кроме того, она пройдет проверку если:
1. $var = true
2 $var = 2.3
Кто может предложить другую красивую, а самое главное достоверную :) проверку?
Только что узнал, что если $a = 'asdfa', то $a == 0
Это нормально?
Так, кто как проверяет на целое положительно число? Будьте добры просто конструкции.
Публичное свойство по определению нельзя защитить от прямых изменений - на то оно и публичное, что каждый может его читать и изменять.
Ок. Переформулирую вопрос. Есть ли возможность создать свойство в объекте, которое будет доступно для чтения из вне, но не доступно для изменения из вне?
---------- Добавлено 07.06.2013 в 13:14 ----------
Коллеги, скажите, пож-та, это нормально, если доступ к свойствам объекта не предоставлять, а возвращать их значения только через методы объекта?
Есть ли возможность защитить от изменения публичное свойство объекта?