ФорумПрограммирование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 г. 13: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 г. 13: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 г. 13: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 г. 13: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 г. 13: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 г. 13: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 г. 14: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 г. 14:31, спустя 6 секунд

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

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

    Spritz 5 февраля 2010 г. 14:48, спустя 17 минут 8 секунд

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

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

    Spritz 5 февраля 2010 г. 15:13, спустя 25 минут 33 секунды

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

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

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

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

    Spritz 5 февраля 2010 г. 15:21, спустя 7 минут 42 секунды


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

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

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

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

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