Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Переопределение assert


Автор: Enelar 10.1.2012, 02:48
Нужно для своих нужд определить функцию
function Assert( $condition, $file, $line )
Но столкнулся с отчаянным сопротивлением денвера:
Код

Fatal error: Cannot redeclare Assert() in W:\home\frontend.ttl\www\index.php on line 4
Fatal error: Cannot redeclare ASSERT() in W:\home\frontend.ttl\www\index.php on line 4
Fatal error: Cannot redeclare AsSeRt() in W:\home\frontend.ttl\www\index.php on line 4
Fatal error: Cannot redeclare asSErT() in W:\home\frontend.ttl\www\index.php on line 4


Текст index.php:
Код

<?php
function Assert( $condition, $file, $line )
{
}
?>
<hr>End.

Как с этим бороться?

Автор: Xplod 10.1.2012, 07:24
http://www.php.net/manual/ru/function.assert.php - это встроенная функция, переопределить не выйдет,  придумайте другое название функции

upd: PHP не поддерживает перегрузку функции, в отличии от С++

Автор: Enelar 10.1.2012, 08:01
Если вы не заметили, определена функция с маленькой буквы.
Пхп что, регистро независим?

Добавлено через 1 минуту и 56 секунд
Господи и вправду так... для чего это сделано? Как отключить?

Добавлено через 2 минуты и 27 секунд
Чего? Какая минута, так время летит???

Добавлено через 2 минуты и 40 секунд
ЧЕГОООО КАКИЕ ДВЕ МИНУТЫ

Добавлено через 2 минуты и 51 секунду
А, понял, фуф

Автор: Xplod 10.1.2012, 08:33
выпрыгнул с балкона...

Автор: Sanchezzz 10.1.2012, 11:28
Можно удалить функцию но для изврата нужно http://pecl.php.net/package/runkit расширение а оно нам нужно?

достаточно воспользоватся конструкцией класса или назвать функцию собственю немного похожу а в коде если долго не хочется парится произвести поиск и замену текста.

Код

class A {

  function aa($p){
     return;
  }

}

A::aa($_SERVER);



Автор: $дмитрий 10.1.2012, 12:24
Если так парит используй преффикс

Автор: actuator 10.1.2012, 13:27
Зачем определять свой Ассерт? Чтобы получить сомнительное удовольствие писать везде assert(a==0, __FILE__, __LINE__)? Можно же просто обработчик подключить: assert_options(ASSERT_CALLBACK, 'my_assert_handler');.

Автор: Enelar 10.1.2012, 17:00
Да, в итоге с префиксом, с классом не очень.
Ассерт нужен что бы писать a == 0, а не "а == 0".

Благодарю господа.

Автор: actuator 10.1.2012, 17:10
Цитата(Enelar @  10.1.2012,  17:00 Найти цитируемый пост)
Ассерт нужен что бы писать a == 0, а не "а == 0".

Так assert и принимает bool либо string. Строки нужны чтобы при отключении assert'а избежать выполнения проверки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)