- file_get_contents: documentation ( source)
- pathinfo: documentation ( source)
- is_file: documentation ( source)
<?php
namespace AdLabs\ParserBundle\Parsers;
/**
* Класс парсинга данных
* @author Syomik Dmitriy <dsemik@gmail.com>
*/
class Parsers{
/**
* put your comment there...
*
* @var \stdClass
*/
protected $inputData;
/**
* Укзаатель на менеджер сущностей
*
* @var mixed
*/
protected $entityManager;
/**
* логгер
*
* @var mixed
*/
protected $logger;
/**
* Контент файла
*
* @var string
*/
protected $fileContent;
/**
* Массив общих шаблонов парсинга
*
* @var array
*/
protected $patterns;
/**
* Объект класса данных
*
* @var ParsersObjectData
*/
protected $objectData;
/**
* Статус отработки основого шаблона
*
* @var boolean
*/
protected $patternStatus;
/**
* put your comment there...
*
* @param mixed $objectData объект данных
* @param mixed $entityManager Entity Manager
* @param mixed $logger логер
*
* @return Parsers
*/
public function __construct($objectData, $entityManager, $logger)
{
$this->objectData = $objectData;
$this->entityManager = $entityManager;
$this->logger = $logger;
}
/**
* Установить входящие данные
*
* @param \StdClass $inputData входящие данные (запрос, путь к файлу)
*
*/
public function setInputData(\StdClass $inputData)
{
$this->inputData = $inputData;
}
/**
* Получить объект данных
*
* @return ParsersObjectData
*/
public function getObjectData()
{
return $this->objectData;
}
/**
* Инициализация поисковой системы и шаблонов для парсинга
*
* @return boolean
*/
public function init()
{
$infoParseResult = $this->pathInfoParse();
$patternResult = $this->getPatterns();
$contentResult = $this->getContent();
return $infoParseResult && $patternResult && $contentResult;
}
/**
* Получить все шаблоны для текущей поисковой системы
*
* @return boolen
*/
private function getPatterns()
{
$this->patterns = $this->entityManager
->getRepository("AdLabsParserBundle:PoiskovikPattern")
->getPatterns($this->objectData->getSearchEngine(), $this->objectData->getDataType());
if (!empty($this->patterns)) {
return true;
} else {
$this->logger->write('Patterns not found '.__CLASS__.' '.__METHOD__);
}
return false;
}
/**
* Инит поисковой системы из имени файла
*
* @param string $parsePath
*
* @return boolen
*/
private function pathInfoParse()
{
$parsePath = (string) $this->inputData->path;
$pathInfo = pathinfo($parsePath);
if (!empty($pathInfo['extension'])) {
$this->objectData->setDataType($pathInfo['extension']);
$this->objectData->setSearchEngine((string) $this->inputData->searchEngine);
$this->objectData->setQuery((string) $this->inputData->query);
return true;
}
$this->logger->write('Error init search engine');
return false;
}
/**
* Получить контент файла
*
* @return boolen
*/
private function getContent()
{
$filePath = (string) $this->inputData->path;
if (is_file($filePath)) {
$this->fileContent = file_get_contents($filePath);
if (!empty($this->fileContent)) {
return true;
} else {
$this->logger->write('File '.$filePath.' is empty');
}
} else {
$this->logger->write('Parse file '.$filePath.' not found');
}
return false;
}
}