Добрый день. Сегодня я создал следующий класс, который проверяет наличие файла (и отображает его) на соответствующем сервере в отношении входящей информации:
class partnermediation_abbyycontroller {
private $servers_dir = null;
private $application_id = null;
public function get_cont($pathToFile)
{
$GetContentFile = file_get_contents($pathToFile);
if ($GetContentFile[0]=='<')
{
header("Content-type:text/xml");
$result = new DOMDocument();
$result->loadXML($GetContentFile);
echo $result->saveXML();
}
else
{
header('Content-Type: text/plain;charset=utf8');
echo $GetContentFile;
}
}
public function __construct($parts)
{
switch ($parts[0]) {
case 'prod': $this->servers_dir = "//srvap2082/C$/temp/"; break;
case 'preprod': $this->servers_dir = "//srvap2027/C$/temp/"; break;
case 'preprod_ft': $this->servers_dir = "//srvap2026/C$/temp/"; break;
case 'test': $this->servers_dir = "//srvap2030/C$/temp/"; break;
}
switch ($parts[3]) {
case 'close': $this->application_id=trim($parts[1]).'_beforeClose.xml'; break;
case 'save': $this->application_id=trim($parts[1]).'_beforeSave.xml'; break;
default: $this->application_id=trim($parts[1]).'_beforeSaveAndForward.xml'; break;
}
($parts[2]=='Request')?$this->application_id=trim($parts[1]).'_afterRead.xml':$this->application_id;
$pathToFile = $this->servers_dir.$this->application_id;
if ($parts[0] == 'prod'){
if (file_exists($pathToFile)){
$this->get_cont($pathToFile);
}
else
{
$pathToFile = $this->servers_dir = "//srvap2087/C$/temp/".$this->application_id;
if (file_exists($pathToFile)){
$this->get_cont($pathToFile);
}
}
}
else
{
if (file_exists($pathToFile)){
$this->get_cont($pathToFile);
}
else
{
echo 'File not found: '.$pathToFile.'';
}
}
}}
Мой вопрос: как сделать код более адекватным? Я говорю о $ this-> get_cont ($ pathToFile); Подробнее c: Если сервер prod = case 'prod', мне нужно сначала проверить file_exists на одном сервере, а затем на другом. Если это не продукт, просто проверьте, есть ли файл на одном сервере. Я сделал это с помощью ififelseif и удаления кода в случае успеха в отдельной функции get_cont ... Как сделать код более рациональным и красивым? Спасибо.