Code Duplication    Length = 25-26 lines in 2 locations

src/Factory.php 2 locations

@@ 158-182 (lines=25) @@
155
     *
156
     * @return BaseDatapackage::class
157
     */
158
    public static function getDatapackageClass($descriptor)
159
    {
160
        $datapackageClasses = array_merge(
161
            // custom classes
162
            static::$registeredDatapackageClasses,
163
            // core classes
164
            [
165
                "frictionlessdata\\datapackage\\Datapackages\TabularDatapackage",
166
                "frictionlessdata\\datapackage\\Datapackages\DefaultDatapackage",
167
            ]
168
        );
169
        $res = null;
170
        foreach ($datapackageClasses as $datapackageClass) {
171
            if (call_user_func([$datapackageClass, 'handlesDescriptor'], $descriptor)) {
172
                $res = $datapackageClass;
173
                break;
174
            }
175
        }
176
        if (!$res) {
177
            // not matched by any known classes
178
            $res = "frictionlessdata\\datapackage\\Datapackages\CustomDatapackage";
179
        }
180
181
        return $res;
182
    }
183
184
    public static function registerResourceClass($resourceClass)
185
    {
@@ 199-224 (lines=26) @@
196
     *
197
     * @return BaseResource::class
198
     */
199
    public static function getResourceClass($descriptor)
200
    {
201
        $descriptor = Utils::objectify($descriptor);
202
        $resourceClasses = array_merge(
203
            // custom classes
204
            static::$registeredResourceClasses,
205
            // core classes
206
            [
207
                'frictionlessdata\\datapackage\\Resources\\TabularResource',
208
                'frictionlessdata\\datapackage\\Resources\\DefaultResource',
209
            ]
210
        );
211
        $res = null;
212
        foreach ($resourceClasses as $resourceClass) {
213
            if (call_user_func([$resourceClass, 'handlesDescriptor'], $descriptor)) {
214
                $res = $resourceClass;
215
                break;
216
            }
217
        }
218
        if (!$res) {
219
            // not matched by any known classes
220
            $res = 'frictionlessdata\\datapackage\\Resources\\CustomResource';
221
        }
222
223
        return $res;
224
    }
225
226
    protected static $registeredDatapackageClasses = [];
227
    protected static $registeredResourceClasses = [];