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

Мой первый класс, посоветуйте

  • pak

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

    Spritz 22 июля 2011 г. 20:03

    Добрый день,
    Кому не лень глянте, посоветйте что так что не так

    простая навигация по строчно
    файл типа
    строка 1
    строка 2
    строка 3
    строка 4



    class Navigator
    {

    public $info = array();

    public function __construct($page, $file = false, $s = 10)
    {
    $this->s = $s;
    $this->file = $file;
    $this->page = $page;
    }

    private function isFile()
    {
    if(file_exists($this->file))
    return true;
    }

    private function arrayFile($i = null)
    {
    if($this->isFile())
    {
    $str = file($this->file);
    if(!isset($i))
    return $str;
    else
    if(isset($str[$i]))
    return $str[$i];
    }
    }

    public function getPage()
    {
    return ceil(count($this->arrayFile()) / $this->s);
    }

    public function getInfo()
    {
    if($this->page <= $this->getPage() and is_numeric($this->page))
    {
    $k = $this->page * $this->s;
    $n = $k - $this->s;

    for($i = $n; $i < $k; ++$i)
    {
    $this->info[] = $this->arrayFile($i);
    }
    return $this->info;
    }
    else
    return $this->info;

    }

    }


    $page = !empty($_GET['page'])? trim($_GET['page']): 1;
    $nav = new Navigator($page,'file.txt');


    foreach($nav -> getInfo() as $value)
    {
    echo $value.'<br />';
    }
    echo '<br><br><br>';

    for($i = 1; $i <= $nav -> getPage(); ++$i)
    {
    echo '<a href="/?page=' .$i. '">   ' .$i. '   </a>';
    }
  • master

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

    Spritz 22 июля 2011 г. 20:15, спустя 11 минут 54 секунды

    поле $info объяви protected
    не всё полезно, что в swap полезло
  • kostyl

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

    Spritz 23 июля 2011 г. 10:04, спустя 13 часов 48 минут 33 секунды

    не красиво ничего не возвращать:
            
    private function isFile()
    {
    if(file_exists($this->file))
    return true;
    }

    private function isFile()
    {
    return is_file($this->file);
    }
  • mario

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

    Spritz 23 июля 2011 г. 10:17, спустя 13 минут 11 секунд

    не красиво ничего не возвращать:

    +1 )))
  • pak

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

    Spritz 23 июля 2011 г. 11:44, спустя 1 час 26 минут 49 секунд

    сбасибо)
    Спустя 40 сек.
    спасибо))
  • Sinkler

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

    Spritz 23 июля 2011 г. 14:29, спустя 2 часа 45 минут 51 секунду

    не красиво ничекого не воразвращать

  • krasun

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

    Spritz 24 июля 2011 г. 1:38, спустя 11 часов 8 минут 40 секунд

    поле $info объяви protected

    почему не private?
  • fgets

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

    Spritz 24 июля 2011 г. 2:16, спустя 37 минут 39 секунд

    не красиво ничего не возвращать

    void
  • krasun

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

    Spritz 24 июля 2011 г. 3:06, спустя 50 минут 3 секунды


    не красиво ничего не возвращать

    void

    Не, не, не… Не вырывай так слова из контекста. Там другое имеется ввиду. isFile или тру или ничего. Понятно, что сработает, если проверять все время только на тру. Другое дело, что это реально не красиво, и возможно false удобней. Короче, код должен быть предсказуемым.
  • master

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

    Spritz 24 июля 2011 г. 10:28, спустя 7 часов 21 минуту 54 секунды

    почему не private?

    Чтобы поле было доступно в дочерних классах
    не всё полезно, что в swap полезло
  • mexys

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

    Spritz 25 июля 2011 г. 17:55, спустя 1 день 7 часов 27 минут

    Предположим, читаем 1000 строк из файа размером 5Мб откуда-нибудь из серединки. Это будет пиздец, файл будет прочитан 1001 раз. Плюсом еще по разу на каждую станичную ссылку. Нужно кэшировать содержимое.

    Поля s, file, page лучше объявить явно как protected.
    Поле $info используется в одном методе – проще заменит переменной.

    getPage() - по логике должен называться getPagesCount()

    Ну и на последок, красивее будет если реализовать интерфейс Iterator, но это пофиг.

  • phpdude

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

    Spritz 25 июля 2011 г. 22:00, спустя 4 часа 4 минуты 46 секунд

    вах
    Спустя 10 сек.
    приветствую тебя о светлейший ум
    Сапожник без сапог
  • mexys

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

    Spritz 25 июля 2011 г. 23:02, спустя 1 час 2 минуты 31 секунду

    и тебе здравия
  • phpdude

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

    Spritz 25 июля 2011 г. 23:22, спустя 19 минут 28 секунд

    чья хуйня?
    http://xmast.net/pstat_fcgi/pyhastat.py
    Спустя 25 сек.
    признавайтесь! а то щабаню всех кто писал в теме :-)
    Сапожник без сапог
  • Tekuto

    Сообщения: 1147 Репутация: N Группа: Адекваты

    Spritz 25 июля 2011 г. 23:23, спустя 1 минуту 29 секунд

    чего там было?

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