Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Функция вывода ошибок
 
 автор: ChieFSS   (12.06.2007 в 20:25)   письмо автору
 
 

Вот решил написать систему отладки (ну это только я её так назвал)
Если появляется ошибка, то скрипт должен её вывести на экран. Все ошибки описаны в функции site_error()
Ошибка вызывается в классе "in", но ошибка не выводится на экран. Пишут что неопределена переменная num.
Вот пытаюсь разобраться в чем проблема. Вроди как return (в class_in.php) должен возвращать её, но он этого не делает или я совсем не так копаю.

index.php

<?
require_once('include/class_in.php');
$in= new in;
echo 
$in->site_error($num);
?>


class_in.php

<?
require_once('include/class_func.php');
class 
in extends func {
    function 
add() {
       
$num '3';
       return(
$num);
    }
}
?>


class_func.php

<?
class func {

function 
site_error($num) {
  
$err[1] = 'Пустые поля.';
  
$err[2] = 'Ошибка авторизации.';
  
$err[3] = 'Ошибка SQL запроса.';
  return(
$err[$num]);
}

}
?>

   
 
 автор: bronenos   (12.06.2007 в 21:42)   письмо автору
 
   для: ChieFSS   (12.06.2007 в 20:25)
 

$num где объявлена?
<? 
require_once('include/class_in.php'); 
$in= new in
echo 
$in->site_error($in->add()); 
?>

можно было бы

   
 
 автор: ChieFSS   (12.06.2007 в 22:35)   письмо автору
 
   для: bronenos   (12.06.2007 в 21:42)
 

$num объявляется там где ошибка.
Если $num = 0, то значит нет ошибки, а если больше, то далее должно сверяться с массивом в функции site_error()

Такой способ не подойдет, потому что неизвестно, сколько таких функций будет и как они будут называться.

   
 
 автор: Trianon   (13.06.2007 в 01:29)   письмо автору
 
   для: ChieFSS   (12.06.2007 в 22:35)
 

непонятно, да?
Код
<?    require_once('include/class_in.php'); 
     
$in= new in
     echo 
$in->site_error($num); 
?> 

сам по себе создает ошибку в третьей строке, поскольку переменная $num неопределена.

   
 
 автор: ChieFSS   (13.06.2007 в 18:57)   письмо автору
 
   для: Trianon   (13.06.2007 в 01:29)
 

Так в классе in в функции возвращается значение ретурном.

   
 
 автор: Trianon   (13.06.2007 в 19:02)   письмо автору
 
   для: ChieFSS   (13.06.2007 в 18:57)
 

Понятно... Вы, похоже, играете в свой собственный язык....

   
 
 автор: ChieFSS   (13.06.2007 в 19:06)   письмо автору
 
   для: Trianon   (13.06.2007 в 19:02)
 

Да не удивляйтесь.. у меня такое каждый день :))
А что ретурн не для этого разьве нужен?

   
 
 автор: Unkind   (13.06.2007 в 19:12)   письмо автору
 
   для: ChieFSS   (13.06.2007 в 19:06)
 

return нужен для того, чтобы вернуть значение. Все, что стоит после return в подпрограмме игнорируется.
В данном случае нет даже вызова функции, которая это значение вернет.

   
 
 автор: ChieFSS   (13.06.2007 в 19:20)   письмо автору
 
   для: Unkind   (13.06.2007 в 19:12)
 

А что будет если перед echo $in->site_error($num); добавить $in->add();

$num стоит в ретурне. значит игнорироваться не должно.

   
 
 автор: Trianon   (13.06.2007 в 19:32)   письмо автору
 
   для: ChieFSS   (13.06.2007 в 19:20)
 

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

   
 
 автор: ChieFSS   (13.06.2007 в 19:37)   письмо автору
 
   для: Trianon   (13.06.2007 в 19:32)
 

Эх.. ещё пол годика?))
Да так то все получается, а вот с классами проблема какая-то.
Ладно посижу пока без классов :)

   
 
 автор: Trianon   (13.06.2007 в 19:39)   письмо автору
 
   для: ChieFSS   (13.06.2007 в 19:37)
 

ну если Вы переменную не отличаете от выражения, а выражение от его значения?
равно как переменную внутри функции от переменной извне?

   
 
 автор: Unkind   (13.06.2007 в 19:40)   письмо автору
 
   для: ChieFSS   (13.06.2007 в 19:37)
 

А что будет если перед echo $in->site_error($num); добавить $in->add();
Ничего не будет. Повторю: return нужен для того, чтобы вернуть значение. А переменная с именем "num" все равно так и не появится.

Грубо говоря, в данном случае

<?php
$in
->add();
?>

Аналогично

<?php
"3";
?>

   
 
 автор: ChieFSS   (13.06.2007 в 19:52)   письмо автору
 
   для: Unkind   (13.06.2007 в 19:40)
 

Ааааа.. дошло.

ЗЫ Проведя анализ состояния своего мозга, я сделал вывод, что я просто перегрелся... неделя очень сложная была. Все еще дня 2 вопросов не задаю пока не приду в себя :))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования