За последние 24 часа нас посетили 18132 программиста и 1653 робота. Сейчас ищут 1683 программиста ...

Помогите решить проблему

Тема в разделе "PHP для новичков", создана пользователем Lexx, 23 янв 2011.

  1. Lexx

    Lexx Активный пользователь

    С нами с:
    31 июл 2008
    Сообщения:
    35
    Симпатии:
    0
    Добрый день!
    Помогите решить проблему.
    А именно есть класс “A” задача которого проверять корректность ввода имени и пароля.
    Есть класс “B” его задача проверять существует пользователь в базе данных или нет.
    Класс “B” наследует “A”, в дальнейшем класс ”A” будут наследовать и другие классы соответственно выводить сообщения пользователю класс “A” должен в разные места (т. е. если страничка регистрации то сообщения выводятся на страничке регистрации, если страничка авторизации то и сообщения должны выводится на страничке авторизации) вот собственно и код:
    PHP:
    1. class A
    2. {
    3. ...
    4. function function_regis_name()
    5. {  
    6.     if(empty($this->name))
    7.     {
    8.         $report = 'вы не в вели имя';  
    9.         exit(eror($report));
    10.                             //exit($form) как я хотелбы
    11.     }...


    PHP:
    1. class B extends A
    2. {
    3. ...
    4.         $form = eror($report);
    5.          
    6.     function user()
    7.     {
    А проблема моя в следующем я хочу чтоб из класса “B” передавать вот это значение:
    PHP:
    1. $form = exit(eror($report))
    , разница только в том что это значение будет разное в каждом классе (класс B наследут класс А и передает ему значение
    PHP:
    1. $form = exit(eror($report))
    , класс “C” наследует класс A и передает значение
    PHP:
    1. $form = exit(restart($report)))
    .
     
  2. RX200

    RX200 Активный пользователь

    С нами с:
    18 дек 2010
    Сообщения:
    56
    Симпатии:
    0
    Если я правильно понял.
    То метод function_regis_name() переопределите в классе С.
    Или в классе А абстрактный метод, а в классах С и В уже определение этих методов.
    Или в переменной $form присваивать результат restart($report) или eror($report). и потом уже exit($form).
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
  4. Lexx

    Lexx Активный пользователь

    С нами с:
    31 июл 2008
    Сообщения:
    35
    Симпатии:
    0
    не совсем так в классе B или С или каком не будь другом определяется какая функция должна запустится в классе А!

    да и вот еще я забыл дописать. дело в том что в принципе у меня все работает из класса B передается $form = eror($report); в класс А, от туда если условие не верно запускается exit(eror($report));(так работает),
    а вот так exit($form) (как я хочу) запускается только функция eror() а сообщение которое находится в $report ($report = 'вы не в вели имя';) не выводится!!!


    PHP:
    1. class A
    2. {
    3.     var $name;
    4.     var $email;
    5.     function __construct()
    6.     {
    7.         $this->name=$name = $_POST['name'];
    8.         $this->email=$email = $_POST['email'];   
    9.     }
    10.    
    11.    
    12. function function_regis_name()
    13. {  
    14.     if(empty($this->name))
    15.     {
    16.         $report = 'вы не в вели имя';
    17.         exit(eror($report));
    18.                             //я хочу так exit($form)
    19.     }
    20. ...
    21.  


    PHP:
    1.  
    2. class B extends A
    3. {
    4.     var $form;
    5.     function __construct()
    6.     {
    7.         parent:: __construct();
    8.         $form = eror($report);
    9.     }
    10.     function user()
    11.     {
    12. ...
    13.  
    function eror($report) находится отдельно не в class
    PHP:
    1.  
    2. function eror($report)
    3. {
    4.     $str = implode(' ',file("1/2.html"));
    5.     $forma = implode(' ',file("1l/23fd.tpl"));
    6.     $str = str_replace('{str}',$forma,$str);
    7.     $str = str_replace('{eror}',$report,$str);
    8.     return $str;   
    9. }
    10.