2016-04-20 09:56:34 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Translation\Loader ;
2018-11-23 12:29:20 +00:00
use Symfony\Component\Config\Resource\FileResource ;
2016-04-20 09:56:34 -07:00
use Symfony\Component\Translation\Exception\InvalidResourceException ;
use Symfony\Component\Translation\Exception\NotFoundResourceException ;
/**
* @ author Abdellatif Ait boudad < a . aitboudad @ gmail . com >
*/
abstract class FileLoader extends ArrayLoader
{
/**
* { @ inheritdoc }
*/
public function load ( $resource , $locale , $domain = 'messages' )
{
if ( ! stream_is_local ( $resource )) {
throw new InvalidResourceException ( sprintf ( 'This is not a local file "%s".' , $resource ));
}
if ( ! file_exists ( $resource )) {
throw new NotFoundResourceException ( sprintf ( 'File "%s" not found.' , $resource ));
}
$messages = $this -> loadResource ( $resource );
// empty resource
if ( null === $messages ) {
$messages = array ();
}
// not an array
2018-11-23 12:29:20 +00:00
if ( ! \is_array ( $messages )) {
2016-04-20 09:56:34 -07:00
throw new InvalidResourceException ( sprintf ( 'Unable to load file "%s".' , $resource ));
}
$catalogue = parent :: load ( $messages , $locale , $domain );
if ( class_exists ( 'Symfony\Component\Config\Resource\FileResource' )) {
$catalogue -> addResource ( new FileResource ( $resource ));
}
return $catalogue ;
}
2018-11-23 12:29:20 +00:00
/**
2016-04-20 09:56:34 -07:00
* @ param string $resource
*
* @ return array
*
2018-11-23 12:29:20 +00:00
* @ throws InvalidResourceException if stream content has an invalid format
2016-04-20 09:56:34 -07:00
*/
abstract protected function loadResource ( $resource );
}