Вход Регистрация
Файл: concrete5.7.5.6/concrete/vendor/gettext/gettext/src/Extractors/Extractor.php
Строк: 102
<?php
namespace GettextExtractors;

use 
Exception;
use 
InvalidArgumentException;
use 
GettextTranslations;

abstract class 
Extractor
{
    
/**
     * Extract the translations from a file
     *
     * @param array|string      $file         A path of a file or files
     * @param null|Translations $translations The translations instance to append the new translations.
     *
     * @return Translations
     */
    
public static function fromFile($fileTranslations $translations null)
    {
        if (
$translations === null) {
            
$translations = new Translations();
        }

        foreach (
self::getFiles($file) as $file) {
            static::
fromString(self::readFile($file), $translations$file);
        }

        return 
$translations;
    }

    
/**
     * Checks and returns all files
     *
     * @param string|array $file The file/s
     *
     * @return array The file paths
     */
    
protected static function getFiles($file)
    {
        if (empty(
$file)) {
            throw new 
InvalidArgumentException('There is not any file defined');
        }

        if (
is_string($file)) {
            if (!
is_file($file)) {
                throw new 
InvalidArgumentException("'$file' is not a valid file");
            }

            if (!
is_readable($file)) {
                throw new 
InvalidArgumentException("'$file' is not a readable file");
            }

            return array(
$file);
        }

        if (
is_array($file)) {
            
$files = array();

            foreach (
$file as $f) {
                
$files array_merge($filesself::getFiles($f));
            }

            return 
$files;
        }

        throw new 
InvalidArgumentException('The first argumet must be string or array');
    }

    
/**
     * Reads and returns the content of a file
     *
     * @param string $file
     *
     * @return string
     */
    
protected static function readFile($file)
    {
        
$length filesize($file);

        if (!(
$fd fopen($file'rb'))) {
            throw new 
Exception("Cannot read the file '$file', probably permissions");
        }

        
$content $length fread($fd$length) : '';
        
fclose($fd);

        return 
$content;
    }
}
Онлайн: 1
Реклама