Browscap\Data\DataCollection::addEnginesFile PHP Метод

addEnginesFile() публичный Метод

Load a engines.json file and parse it into the platforms data array
public addEnginesFile ( string $src ) : DataCollection
$src string Name of the file
Результат DataCollection
    public function addEnginesFile($src)
    {
        $json = $this->loadFile($src);
        if (!isset($json['engines'])) {
            throw new \UnexpectedValueException('required "engines" structure is missing');
        }
        $engineFactory = new Factory\EngineFactory();
        foreach (array_keys($json['engines']) as $engineName) {
            $engineData = $json['engines'][$engineName];
            if (!isset($engineData['properties']) && !isset($engineData['inherits'])) {
                throw new \UnexpectedValueException('required attibute "properties" is missing');
            }
            $this->engines[$engineName] = $engineFactory->build($engineData, $json, $engineName);
        }
        $this->divisionsHaveBeenSorted = false;
        return $this;
    }

Usage Example

Пример #1
0
 /**
  * tests getting an existing engine
  *
  * @group data
  * @group sourcetest
  */
 public function testGetEngine()
 {
     $this->object->addEnginesFile($this->getEngineJsonFixture());
     self::assertInternalType('array', $this->object->getEngines());
     $engine = $this->object->getEngine('Foobar');
     self::assertInstanceOf('\\Browscap\\Data\\Engine', $engine);
     $properties = $engine->getProperties();
     self::assertInternalType('array', $properties);
     self::assertArrayHasKey('RenderingEngine_Name', $properties);
     self::assertSame('Foobar', $properties['RenderingEngine_Name']);
 }