ООП PHP
Класс для работы с файлом
Создадим класс для работы с текстовым файлом (что-то в него записывать). Создадим файл index.php, папку classes c файлом File.php внутри и текстовый файл file.txt, в который мы будем что-то записывать.
Содержание папки 5 ("Класс для работы с файлом"):
В файле File.php (класс File) создадим два свойства:
- public $file - здесь будем хранить путь к файлу;
- public $fp - здесь будем хранить указатель на открытый файл, с которым мы будем работать;
и два метода:
- public function __construct($file); - конструктор будет принимать параметром наименование
самого файла $file,
- public function __destruct() - деструктор.
Все магические методы рекомендуется писать в начале класса.
Все пользовательские функции - после них.
Создадим еще собственный метод, который будет что-то записывать в файл:
- public function write($text);
- данный метод будет принимать параметром строку $text,
которую необходимо записать в файл.
Файл File.php
-- файл File.php --
<?php
// создание класса
class
{
// свойства класса
public $fp; // указатель на открытый файл
public $file; // сам файл (Путь к нему)
// методы класса
public function ($file)
{
}
public function ()
{
}
public function ($text)
{
}
}
?>
В индексном файле подключим наш класс File.
Создадим в нем экземпляр данного класса, параметром он будет принимать путь к файлу:
- $file = new File( __DIR__ . '/file.txt'):
Файл index.php
-- файл index.php --
<?php
// включаем показ ошибок
(-1);
// подключение файла File.php
require_once 'classes/File.php';
// создаем экземпляр данного класса
// в качестве параметра передаем путь к файлу file.txt
// (этот параметр передается в конструктор)
$file = new ( . '/file.txt');
?>
Путь к файлу (__DIR__ . '/file.txt') передается в конструктор, соответственно, в конструкторе
мы с ним можем работать. И нас интересует запись этого параметра (этого пути) в свойство
публичное $file:
- $this -> file = $file;
Далее проверяем с помощью метода is_writable, доступен ли файл для записи и есть ли он вообще.
Если мы эту проверку прошли, то нам необходимо файл открыть для записи. Для этого у нас есть
свойство $fp - в котором мы храним указатель на открытый файл. Заполняем его:
fopen($this->file, 'a')
- теперь в свойстве fp хранится указатель на открытый файл, в который можно что-то записывать.
Поскольку у нас есть __destruct и файл после записи желательно закрывать, мы используем функцию fclose для закрытия файла.
В методе write используем функцию fwrite(). Эта функция пишет что то в файл и первым параметром
мы передаем указатель:
$this->fp,
- вторым параметром мы передаем текст, который необходимо
записать (он передается в виде аргумента $text). Если условие "if" равно FALSE, то
выведем:
echo "Не могу произвести запись в файл {$this->file}";
и завершим работу exit.
Наш класс готов:
Файл File.php
-- файл File.php --
<?php
// создание класса
class
{
// свойства класса
public $fp; // указатель на открытый файл
public $file; // сам файл (Путь к нему)
// методы класса
public function ($file)
{
// запись пути в публичное свойство file
$this -> file = $file;
// Убедимся в правильности пути
echo $this-> file = $file;
echo '<br>';
// - выведет наш путь: C:\OSPanel\domains\PHPoop1\05/file.txt
// проверяем с помощью метода is_writable, доступен-ли файл
// для записи и есть-ли он вообще?
// вместо $this->file можно теоретически использовать $file
if ( ! ($this -> file))
{
echo "Файл {$this -> file} недоступен для записи";
// - записывать в двойных кавычках!!!
exit; // завершаем работу
}
// если проверку прошли, то нам необходимо открыть файл для записи
// для этого есть свойство fp ; заполняем его: fopen($this->file, 'a')
// теперь в свойстве fp хранится указатель на открытый файл,
// в который можно что-то записывать
$this -> fp = ( $this -> file, 'a');
}
// метод __destruc
// в деструкторе мы используем функцию fclose для закрытия файла (где fp
// - указатель на открытый файл)
public function ()
{
( $this -> fp );
}
// объявление собственного метода write, который будет что-то записывать в файл
// в качестве параметра он будет принимать строку $text,
// которую необходимо записать в файл
public function ($text)
{
if ( ( $this -> fp, $text . ) === FALSE)
// - где PHP_EOL или "\n" - перенос строки
{
echo "Не могу произвести запись в файл {$this->file}";
exit;
}
}
}
?>
В индексном файле вызываем метод write($text), и передаем ему параметром строку, которую хотим записать. Далее запускаем данный код и проверяем его работу.
Файл index.php
-- файл index.php --
<?php
// включаем показ ошибок
(-1);
// подключение файла File.php
require_once 'classes/File.php';
// создаем экземпляр данного класса
// в качестве параметра передаем путь к файлу file.txt
// (этот параметр передается в конструктор)
$file = new ( . '/file.txt');
// вызываем метод write экземпляра класса $file и передаем ему
// параметром строку, которую хотим записать
$text = 'строка 1';
$file -> ($text);
$file -> ('строка 2');
$file -> ('строка 3');
$file -> ('строка 4');
$file -> ('строка 5');
?>
В текстовом файле file.txt получим:
-- файл file.txt --
строка 1
строка 2
строка 3
строка 4
строка 5
Наверх Наверх