kiowas

kiowas
Рейтинг
61
Регистрация
06.02.2010
siv1987:
Точно? var_dump(myCheckDigit('0')); => bool(true)

Точно! var_dump(myCheckDigit(0)); => bool(false)

Уважаемый, мне бы не хотелось здесь общаться на тему могу ли я нагуглить эту функцию или сам написать, нужна ли такая функция в реальных проектах или нет. Просто, если у вас есть на вооружении какая-то красивая функция, или вам не сложно ее написать за меня, поделитесь, пож-та. Очень надеюсь на понимание, спасибо.

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.

Оптимизайка:
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();

Еще предложения.

ortegas:
kiowas, господи.

(int) $var == $var && $var > 0

Твоя проверка даст положительный результат в случае:

1. $var = new some_class();

2. $var = true;

Коллеги, необходима красивая проверка, которая проверяет переменную на предмет того, является ли она положительным целым числом или (добавлю) строкой, которая содержит такое число, например '1' или '132' и т.д.

Айдишники ведь, практически при каждом $_POST передаются. Гарантировано встречаетесь с необходимостью проверить id. Так как проверяете?

---------- Добавлено 07.06.2013 в 18:53 ----------

Уважаемые, создам наверное еще одну тему, исключительно под эту задачу. Читал сейчас в инете, одну фигню пишут. Проверку так никто и не сделал. Надеюсь админы не будут против.

ortegas:
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 ----------

for93t:
Да. Вам еще очень многое предстоит узнать ;)

---------- Добавлено 07.06.2013 в 17:56 ----------



$var = (isset($_REQUEST['var']) ? (int) trim($_REQUEST['var']) : 0);
if (0 < $var) {
...

Твоя проверка выдаст ошибку, если:

1. $var = new some_object()

2. $var = array();

Кроме того, она пройдет проверку если:

1. $var = true

2 $var = 2.3

Кто может предложить другую красивую, а самое главное достоверную :) проверку?

Только что узнал, что если $a = 'asdfa', то $a == 0

Это нормально?

Так, кто как проверяет на целое положительно число? Будьте добры просто конструкции.

for93t:
Публичное свойство по определению нельзя защитить от прямых изменений - на то оно и публичное, что каждый может его читать и изменять.

Ок. Переформулирую вопрос. Есть ли возможность создать свойство в объекте, которое будет доступно для чтения из вне, но не доступно для изменения из вне?

---------- Добавлено 07.06.2013 в 13:14 ----------

Коллеги, скажите, пож-та, это нормально, если доступ к свойствам объекта не предоставлять, а возвращать их значения только через методы объекта?

Есть ли возможность защитить от изменения публичное свойство объекта?

Всего: 300