MagentoComponent.php 1005 Bytes
Newer Older
Ketan's avatar
Ketan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Framework\Composer;

class MagentoComponent
{
    /**
     * Get matched Magento component or empty array, if it's not a Magento component
     *
     * @param string $key
     * @return string[] ['type' => '<type>', 'area' => '<area>', 'name' => '<name>']
     *             Ex.: ['type' => 'module', 'name' => 'catalog']
     *                  ['type' => 'theme', 'area' => 'frontend', 'name' => 'blank']
     */
    public static function matchMagentoComponent($key)
    {
        $typePattern = 'module|theme|language|framework';
        $areaPattern = 'frontend|adminhtml';
        $namePattern = '[a-z0-9_-]+';
        $regex = '/^magento\/(?P<type>' . $typePattern . ')(?:-(?P<area>' . $areaPattern . '))?(?:-(?P<name>'
            . $namePattern . '))?$/';
        if (preg_match($regex, $key, $matches)) {
            return $matches;
        }
        return [];
    }
}