объект для чтения файла

pitbuly

Новичок
объект для чтения файла

Мне нужно прочитать файл с помощью обьекта
вот класс чтения файлов
PHP:
class op_file
  {
  var $filename='';
  var $rej='';  //Mode of reading
  var $id_file='';
  var $out='';
  function __construct($filename,$rej)
  {
  $this->filename = $filename;
  $this->rej = $rej;
  $this->id_file = fopen($this->filename,$this->rej);
  $this->out = $out;
  }
  function output_file()
  {
  while (!feof($this->id_file))
  {
  $this->out = fgets($this->id_file,255);
  }
  return $this->out;
  }
  function __destruct()
  {
  fclose($this->id_file);
  }
  }
$conten = new op_file('model.txt',r);
echo $conten->output_file();
но этот класс выводит только последнии 255 символов.Если return засунуть внутрь while то выводятся первые 255 символов .как грамотно решить эту проблемму.
 

SiMM

Новичок
> как грамотно решить эту проблемму.
Для начала разобраться с тем, что же делает этот участок кода
PHP:
while (!feof($this->id_file))
  $this->out = fgets($this->id_file,255);
 

master_x

Pitavale XXI wieku
pitbuly
ну а как же тут без ООП... это я к тому, что твою задачу надо сначала решить при помощи структурного подхода а потом уже (если вообще-то понадобится, в чем я сомневаюсь) перенести весь код на ООП.
 

SiMM

Новичок
Я боюсь, что ему лично задачи вообще решать не придётся - он считает, что достаточно заспамить десяток-другой форумов, чтобы за него всё сделали.
 

pitbuly

Новичок
SIMM ты не прав просто я нашел на одном форуме
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5557&page=1
класс генерирующий страницу и я решил продолжить в том же духе
и сделать что-то типа шаблонизатора.тексты , HTML,PHP держать отдельно. У меня получилось, но можно делать только простенькие
сайты,мне не удалось HTML отделить от PHP.вот сам код.
PHP:
<?php
if(!$str=$_REQUEST['str']) $str = 1;

  class build_page
  {
    var $title=''; // Название страницы
    var $charset=''; // Кодировка страницы
    var $css=''; // Стили для страницы
    var $meta=''; // Доп. параметры
    var $text=''; // Сам текст вывода
    function __construct($title, $charset, $css, $meta, $text)
    {
        echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD>';
        $this->title = $title;
        $this->charset = $charset;
        $this->css = $css;
        $this->meta = $meta;
        $this->text = $text;
    }
    function output()
    {
        echo "<TITLE>".$this->title."</TITLE>";
        echo '<meta http-equiv="Content-Type" content="text/html; charset='.$this->charset.'">';
        echo '<link href="'.$this->css.'" rel="stylesheet" type="text/css">';
        echo $this->meta;
        echo "</head><body>";
        echo $this->text;

    }
    function __destruct()
    {
        echo '</body></html>';
    }
  }

  class op_file
  {
  var $filename=''; //файл
  var $rej='';  //режим открытия файла
  var $id_file=''; //идентификатор
  var $out='';
  var $txt = '';
  function __construct($filename,$rej)
  {
  $this->filename = $filename;
  $this->rej = $rej;
  $this->id_file = fopen($this->filename,$this->rej) or die ("ошибка при открытии файла\n");
  $this->out = $out;
  }

  function output_file()
  {
  while (!feof($this->id_file))
  {
  $this->out .= fgets($this->id_file,255);
  }
  return $this->out;
  }
  function write_file($txt)
  {
  $this->txt = $txt;
  fputs($this->id_file,$this->txt);
  }
  function __destruct()
  {
  fclose($this->id_file);
  }
  }
  
function m_file()
  {
$myfile = file("txt/zagl.txt");
return $myfile;
}
$myfile = m_file();
$conT = new op_file("txt/{$str}.txt","r");
$content = "<table><tr><td colspan=\"2\"><img src=\"images/1.gif\"><td></tr>".
"<tr><td><a href=\"{$_SERVER['PHP_SELF']}?str=1\">Глава 1</a><br>".
"<a href=\"{$_SERVER['PHP_SELF']}?str=2\">Глава 2</a><br>".
"<a href=\"{$_SERVER['PHP_SELF']}?str=3\">Глава 3</a><br>".
"<a href=\"{$_SERVER['PHP_SELF']}?str=4\">Глава 4</a></td><td><h1>глава $str</h1>".
"<h2>{$myfile[$str-1]}</h2><p class=\"red\">{$conT->output_file()}</p></td></tr></table>";

 $page = new build_page("testing","windows-1251","css/main.css","",$content);
 $page->output();
?>
 

bkonst

.. хочется странного?...
Из праздного интереса: а использование file_get_contents для получения содержимого файла уже считается неправильным?
 

white phoenix

Новичок
bkonst
не просто правильным, а предпочтительным
[m]file_get_contents[/m]:
Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует алгоритм 'memory mapping' (если поддерживается операционной системой).
 
Сверху