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

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

  • Абырвалг

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

    Spritz 22 января 2010 г. 17:09, спустя 3 минуты 47 секунд

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

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

    Spritz 22 января 2010 г. 17:26, спустя 16 минут 41 секунду


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

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

    Spritz 22 января 2010 г. 17:43, спустя 17 минут 9 секунд

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

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

    Spritz 22 января 2010 г. 17:49, спустя 5 минут 52 секунды


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

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

    Spritz 5 февраля 2010 г. 5: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(&quot;SELECT * FROM user WHERE login=&#39;&quot;.$this->login.&quot;&#39; AND pass=&#39;&quot;.$this->pass.&quot;&#39;&quot;);
    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 г. 5:11, спустя 6 минут 41 секунду

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

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

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

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

    Spritz 5 февраля 2010 г. 5: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

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

    Spritz 5 февраля 2010 г. 5: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(&quot;SELECT * FROM user WHERE login=&#39;&quot;.$this->login.&quot;&#39; AND pass=&#39;&quot;.$this->pass.&quot;&#39;&quot;);
    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

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

    Spritz 5 февраля 2010 г. 5: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(&quot;SELECT * FROM user WHERE login=&#39;&quot;.$this->login.&quot;&#39; AND pass=&#39;&quot;.$this->pass.&quot;&#39;&quot;);
    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(&quot;SELECT * FROM user WHERE login=&#39;&quot;.$this->login.&quot;&#39; AND pass=&#39;&quot;.$this->pass.&quot;&#39;&quot;);
    if(mysql_num_rows($sql) == 1)
    {
    $mas = mysql_fetch_array($sql);
    return $mas;
    }
    }
    }

    ?>


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

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

    Spritz 5 февраля 2010 г. 5: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(&#39;customer&#39;)->__(&#39;Invalid login or password.&#39;),
    self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD
    );
    }
    return true;
    }
    }
  • kamachi

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

    Spritz 5 февраля 2010 г. 6: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(&#39;customer&#39;)->__(&#39;Invalid login or password.&#39;),
    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(&#39;customer&#39;)->__(&#39;Invalid login or password.&#39;),
    self::EXCEPTION_INVALID_EMAIL_OR_PASSWORD
    );
    }
    return true;
    }
    }



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

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

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

    Spritz 5 февраля 2010 г. 6:31, спустя 6 секунд

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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