Всё для вас =)Думаю, да, если у него будет свой класс, то потом ему можно назначить свою уникальную обработку...
Кому то в лог хочется писать ошибки, кто-то при отладке захочет trace сделать...
private function error($err)
{
$err = __CLASS__.": ".$err;
if ( $this->emode == 'error' )
{
$err .= ". Error initiated in ".$this->caller().", thrown";
trigger_error($err,E_USER_ERROR);
} else {
throw new $this->exname($err);
}
}
вот фигу тебе с маслом.>количество настроек уже начинает поднапрягать
ты главное не останавливайся - и месяцев через пять у тебя будет свой фреймворк
Кидать ошибку - нехер баловаться.Вот, кстати, коллега мне только что попенял на то, что пустая строка вызывает ошибку.
Как, на ваш взгляд, лучше поступать - правильнее или удобнее?кидать ошибку или приводить к инту?
а если не пустая строка, а "33sobaki"?
static public function escapeInt($value)
{
if (is_float($value))
{
if ($value > PHP_INT_MAX){
self::getInstance()->error("Large float value [$value] can not be converted to string presizely");
}
return number_format($value, 0, '.', '');
}
elseif (is_int($value))
{
return (string)$value;
}
elseif (is_string && is_numeric(trim($value)))
{
return trim($value);
}
else
{
self::getInstance()->error("Invalid value for ?i (int) placeholder (".gettype($value).")");
}
}
Насчёт статики не очень понял, но про приватность скажу.Вопрос: зачем статическую функцию делать приватным методом?
Кто сказал? Сдаётся мне, что это заблуждение.кстати, "Invalid value for ?i (int) placeholder: [$value]" писать не надо потому что при передаче в параметр массива будет Notice
private function escapeInt($value)
{
if (is_float($value))
{
return number_format($value, 0, '.', ''); // may lose precision on big numbers
}
elseif(preg_match('/^-?[0-9]+$/', $value))
{
return (string)$value;
}
else
{
$this->error("Invalid value");
}
}
не вижу подтвержденияis_numeric же фальшивит.
здесь ты показал, почему нельзя использовать number_format,$ php -r '$x="-123123123123123123123123123.435645646545645"; echo is_numeric($x); '
1
Да тут-то как раз всё просто,не вижу подтверждения
var_dump(is_numeric("1.844674407371E+19")); //bool(true)
а что в нем плохого? если ты пропускаешь float - надо назвать метод escapeNum и пропускать экспонентуДа тут-то как раз всё просто,
- она пропустит экспоненциальный формат, который получится, если мы раньше где-то успеем привести флоат к строке.
дело в том, что это не флоат, а срока.а что в нем плохого? если ты пропускаешь float - надо назвать метод escapeNum и пропускать экспоненту
Прошу прощения, для float возможны и такие варианты:А вот и ни хрена.
is_numeric же фальшивит.
так что, всё-таки
PHP:private function escapeInt($value) { if (is_float($value)) { return number_format($value, 0, '.', ''); // may lose precision on big numbers } elseif(preg_match('/^-?[0-9]+$/', $value)) { return (string)$value; } else { $this->error("Invalid value"); } }
$v = log(0);
echo "v = $v " . escapeInt($v) . "\n";
Прелесть какая!Прошу прощения, для float возможны и такие варианты:
а че так сложно$v = log(0);