ФорумПрограммированиеPHP для идиотовPHP и ООП → непонятки с ООП

непонятки с ООП

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Янв. 23, 2010, 1:09 д.п., спустя 3 минуты 47 секунд

    ок. А как быть в таком случае:
    вывод списка сообщений. Справа от сообщения есть кнопка "редактировать" (если ты залогинен под автором сообщения). Как закешировать список этих сообщений?
    Усложним задание, и дата сообщения выводится в относительном формате: минуту назад, 5 минут назад.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 23, 2010, 1:26 д.п., спустя 16 минут 41 секунду


    ок. А как быть в таком случае:
    вывод списка сообщений. Справа от сообщения есть кнопка "редактировать" (если ты залогинен под автором сообщения). Как закешировать список этих сообщений?
    Усложним задание, и дата сообщения выводится в относительном формате: минуту назад, 5 минут назад.
    можешь закешировать скл запроса данные, даты форматирование и тп нихуя не стоят времени
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Янв. 23, 2010, 1:43 д.п., спустя 17 минут 9 секунд

    и отрендеренные данные для анонимусов
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 23, 2010, 1:49 д.п., спустя 5 минут 52 секунды


    и отрендеренные данные для анонимусов
    ну да, это тоже можно, чтобы поиск роботы мозг не ебли)
    Сапожник без сапог
  • kamachi

    Сообщения: 320 Репутация: N Группа: Кто попало

    Spritz Фев. 5, 2010, 1:04 п.п., спустя 13 дней 11 часов 15 минут

    я вот тут пытаюсь до сих пор догнать ооп

    написал класс для авторизции, хотя помоему говнокод получился

    <?php
    
    class userEnter
    {
        public $login;
        public $pass;
        
        public function get_lp($login,$pass)
        {
            $this->login = mysql_real_escape_string(htmlspecialchars(trim($login)));
            $this->pass = mysql_real_escape_string(htmlspecialchars(trim($pass)));
        }
        
        public function search_DB()
        {
            $sql = mysql_query("SELECT * FROM user WHERE login='".$this->login."' AND pass='".$this->pass."'");
            if(mysql_num_rows($sql) == 1)
            {           
                $mas = mysql_fetch_array($sql);
                return $mas;
            }
        }
    }
    
    
    $obj = new userEnter($login,$pass);
    $obj->get_lp();
    $obj->search_DB();
    
    
    ?>
    Спустя 88 сек.
    такая фигня бутет работать?? И как мне теперь достать $mas икласса.. как пользоваться?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Фев. 5, 2010, 1:11 п.п., спустя 6 минут 41 секунду

    как по мне то авторизация должна быть у обьекта User
    соотвественно должен быть быть класс User а у него метод authorize()
    Спустя 79 сек.
    + обьект User вообще недолжен знать что такое mysql_query.
    это задача датабейз адаптера.
    Спустя 35 сек.
    И как мне теперь достать $mas икласса.. как пользоваться?
    у тебе вообщето метод search_DB() его возвращает…
    Спустя 102 сек.
    я вот тут пытаюсь до сих пор догнать ооп

    догнать ооп - это не использовать его синтаксис.
    Спустя 101 сек.
    и опять же…
    именуй методы так, чтоб через год ты открыл свой код и понял что там происходит.

    как по мне то search_DB() должен искать базу данных…
    Спустя 29 сек.
    а что такое get_lp() я вообще не понял…
  • kamachi

    Сообщения: 320 Репутация: N Группа: Кто попало

    Spritz Фев. 5, 2010, 1:14 п.п., спустя 3 минуты 30 секунд


    как по мне то авторизация должна быть у обьекта User
    соотвественно должен быть быть класс User а у него метод authorize()
    Спустя 79 сек.
    + обьект User вообще недолжен знать что такое mysql_query.
    это задача датабейз адаптера.
    Спустя 35 сек.
    И как мне теперь достать $mas икласса.. как пользоваться?
    у тебе вообщето метод search_DB() его возвращает…
    Спустя 102 сек.
    я вот тут пытаюсь до сих пор догнать ооп

    догнать ооп - это не использовать его синтаксис.
    Спустя 101 сек.
    и опять же…
    именуй методы так, чтоб через год ты открыл свой код и понял что там происходит.

    как по мне то search_DB() должен искать базу данных…
    Спустя 29 сек.
    а что такое get_lp() я вообще не понял…

    яж говорю говнокод))

    а вот search_DB() у меня возвращает массив, но как его заюзать в скрипте??

    просто $mas писать или может так $mas = $obj->search_DB(); ?? Не пойму(
    Спустя 50 сек.
    get_lp типа фильтрация
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Фев. 5, 2010, 1:22 п.п., спустя 8 минут 2 секунды

    <?php
     
    class userEnter
    {
        public $login;
        public $pass;
       
        public function get_lp($login,$pass)
        {
            $this->login = mysql_real_escape_string(htmlspecialchars(trim($login)));
            $this->pass = mysql_real_escape_string(htmlspecialchars(trim($pass)));
        }
       
        public function search_DB()
        {
            $sql = mysql_query("SELECT * FROM user WHERE login='".$this->login."' AND pass='".$this->pass."'");
            if(mysql_num_rows($sql) == 1)
            {           
                $mas = mysql_fetch_array($sql);
                return $mas;
            }
        }
    }
     
    
    $obj = new userEnter($login,$pass);
    $obj->get_lp();
    $obj->search_DB();
     
    
    ?>
    этот пример даже не запустится, это хуйня.
    Сапожник без сапог
  • kamachi

    Сообщения: 320 Репутация: N Группа: Кто попало

    Spritz Фев. 5, 2010, 1:41 п.п., спустя 18 минут 57 секунд


    <?php
     
    class userEnter
    {
        public $login;
        public $pass;
       
        public function get_lp($login,$pass)
        {
            $this->login = mysql_real_escape_string(htmlspecialchars(trim($login)));
            $this->pass = mysql_real_escape_string(htmlspecialchars(trim($pass)));
        }
       
        public function search_DB()
        {
            $sql = mysql_query("SELECT * FROM user WHERE login='".$this->login."' AND pass='".$this->pass."'");
            if(mysql_num_rows($sql) == 1)
            {           
                $mas = mysql_fetch_array($sql);
                return $mas;
            }
        }
    }
     
    
    $obj = new userEnter($login,$pass);
    $obj->get_lp();
    $obj->search_DB();
     
    
    ?>
    этот пример даже не запустится, это хуйня.


    а как нужно(( создать класс user у которого будет метот authorize()?? Щас я попробую написать
    Спустя 222 сек.
    <?php
    
    class USER
    {
        public $login;
        public $pass;
        
        public function authorize($login,$pass)
        {
            $this->login = mysql_real_escape_string(htmlspecialchars(trim($login)));
            $this->pass = mysql_real_escape_string(htmlspecialchars(trim($pass)));
            
            $sql = mysql_query("SELECT * FROM user WHERE login='".$this->login."' AND pass='".$this->pass."'");
            if(mysql_num_rows($sql) == 1)
            {           
                $mas = mysql_fetch_array($sql);
                return $mas;
            }
        }
    }
    
    ?>


    а так будет пахать??
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Фев. 5, 2010, 1:57 п.п., спустя 15 минут 12 секунд

    обьект User вообще недолжен знать что такое mysql_query.
    это задача датабейз адаптера.


    я это вижу както так :
    <?php
    
    class NRG_Customer_Model_Customer
    {
        /**
         * Authenticate customer
         *
         * @param  string $login
         * @param  string $password
         * @return true
         * @throws Exception
         */
        public function authenticate($login, $password)
        {
            $this->loadByEmail($login);
            if (!$this->validatePassword($password)) {
                throw NRG::exception(NRG::helper('customer')->__('Invalid login or password.'),
                    self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD
                );
            }
            return true;
        }
    }
    
  • kamachi

    Сообщения: 320 Репутация: N Группа: Кто попало

    Spritz Фев. 5, 2010, 2:31 п.п., спустя 34 минуты 5 секунд


    обьект User вообще недолжен знать что такое mysql_query.
    это задача датабейз адаптера.


    я это вижу както так :
    <?php
    
    class NRG_Customer_Model_Customer
    {
        /**
         * Authenticate customer
         *
         * @param  string $login
         * @param  string $password
         * @return true
         * @throws Exception
         */
        public function authenticate($login, $password)
        {
            $this->loadByEmail($login);
            if (!$this->validatePassword($password)) {
                throw NRG::exception(NRG::helper('customer')->__('Invalid login or password.'),
                    self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD
                );
            }
            return true;
        }
    }
    



    слушай я тут поняит пытаюсь ооп, что за хню ты написал))) что эти :: делают???

    validatePassword это метод для проверки пароля?? self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD это что за зверь…
    Спустя 219 сек.


    обьект User вообще недолжен знать что такое mysql_query.
    это задача датабейз адаптера.


    я это вижу както так :
    <?php
    
    class NRG_Customer_Model_Customer
    {
        /**
         * Authenticate customer
         *
         * @param  string $login
         * @param  string $password
         * @return true
         * @throws Exception
         */
        public function authenticate($login, $password)
        {
            $this->loadByEmail($login);
            if (!$this->validatePassword($password)) {
                throw NRG::exception(NRG::helper('customer')->__('Invalid login or password.'),
                    self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD
                );
            }
            return true;
        }
    }
    



    слушай я тут понять пытаюсь ооп, что за хню ты написал))) что эти :: делают???

    validatePassword это метод для проверки пароля?? self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD это что за зверь…
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Фев. 5, 2010, 2:31 п.п., спустя 6 секунд

    self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD это что за зверь…
    думаю что строковая константа
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Фев. 5, 2010, 2:48 п.п., спустя 17 минут 8 секунд

    kamachi, за каким хуем ты сам себя цитируешь?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Фев. 5, 2010, 3:13 п.п., спустя 25 минут 33 секунды

    что эти :: делают???

    обращение к статическим свойствам/методам
    Спустя 46 сек.
    validatePassword это метод для проверки пароля??

    да, он возвращает boolean
    Спустя 81 сек.
    на константу EXCEPTION_INVALID_EMAIL_OR_PASSWORD можешь покачто не обращать внимание, собственно и на конструкцию throw тоже.
  • kamachi

    Сообщения: 320 Репутация: N Группа: Кто попало

    Spritz Фев. 5, 2010, 3:21 п.п., спустя 7 минут 42 секунды


    что эти :: делают???

    обращение к статическим свойствам/методам
    Спустя 46 сек.
    validatePassword это метод для проверки пароля??

    да, он возвращает boolean
    Спустя 81 сек.
    на константу EXCEPTION_INVALID_EMAIL_OR_PASSWORD можешь покачто не обращать внимание, собственно и на конструкцию throw тоже.

    мне сложно эти веши понять, я еще начинаюший.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!